为什么我的程序总是崩溃 (C++)

Why Does My Program Keep Crashing (C++)?

本文关键字:C++ 崩溃 我的 程序 为什么      更新时间:2023-10-16

我不明白为什么这在Visual Studio 2012中无法正常运行

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
char nullChar()
{
    char ch;
    int ran = (rand() % 52);
    if (ran < 26) 
        {
            ch = (char) ('a'+ ran);
        } 
    else 
        {
            ch = (char) ('A'+ ran - 26);
        }
    return ch;
}
int main(int argc, char *argv[]) 
{ 
    cout << "Enter a string";
    int nullNum = 0;
    nullNum = atoi(argv[2]);
    if (strcmp(argv[1], "-d") == 0)
        {
            int count = -1;
            do
                {
                    int c = cin.get();
                    count++;
                    if(count == nullNum)
                        {
                            cout.put(c);
                            count = -1;
                        }
                } while (!cin.eof()) ;
        }
    if(strcmp(argv[1], "-e") == 0)
        {
            char c = cin.get();
            while(!cin.eof())
                {
                    for (int i = -1; i < (nullNum-1); ++i)
                        {
                            cout << nullChar();
                        }
                    cout << c;
                    c = cin.get();
                }
        }

} 

代码编译完美。我怀疑循环中有什么东西,但我无法弄清楚。我也认为几天前它运行得很好,但现在不是了。这可能吗?

我不确定您是否传递了参数。但除此之外,在使用argv[xyz]之前,你应该始终检查argc。我的猜测是你得到一个段错误,因为没有argv[1]和argv[2]