我想讀取一個文件並計算這些文字。我希望它能夠設置,以便我可以使用命令行,或者如果在命令行中沒有輸入文件,可以觸發if語句來獲取文件名並讀取它,然後對這些單詞進行計數。如果我在命令行中輸入文件名,它會起作用,但如果我不使用它,它會發生故障。下面是代碼:爲什麼我在if語句中遇到seg錯誤?
int main(int argc, char **argv)
{
char file[75];
if (argc < 2)
{
cout << "Please enter the filename: ";
cin >> file;
strcpy(argv[1], file);
}
string content;
ifstream inFile(argv[1]);
int count = 0;
while (inFile >> content)
count++;
inFile.close();
display(count, argv);
return 0;
}
這是UB:'的strcpy(argv的[1],文件) ;' – drescherjm
如果'argc'小於2那麼'argv'的有效索引是什麼? – NathanOliver
您是否嘗試在分段出現故障後使用調試程序闖入代碼?那是什麼告訴你的?學習使用調試器是非常好的做法。即使你在這裏得到答案之後,你也應該嘗試一下,以確保你看到你將來如何爲自己弄明白這一點。 –