該程序應該查找以「.exe」結尾的Unix上輸入的命令行參數。由於某種原因,它不起作用。這裏是代碼:在字符串C++的末尾比較字符
int main(int argc, char* argv[])
{
for (int i = 1; i < argc; i++)
if(findExe(argv[i]))
cout << argv[i] << endl;
return 0;
}
bool findExe(char* argument)
{
if (strlen(argument) >= 4)
{
string testExe = ".exe";
string initialWord=argument; //converts c-string to string
string temp(initialWord,(initialWord.size() - 4),4);//creates temp with last four characters from initialWord
if (!temp.compare(testExe))
return true;
}
else
return false;
}
作爲一個便箋,任何想法,爲什麼它只是一個警告,而不是一個錯誤? – Naveen 2009-11-14 17:42:06
如果你使用的是gcc,試試像這樣編譯:g ++ -Wreturn-type ...來查看你的代碼的問題。 – 2009-11-14 17:45:58
@Naveen:實際上,我沒有看過它是否是錯誤,只是假設沒有證明Pat的編譯器在這方面是兼容的。我的意思是「應該」,意思是「這是編譯器經常注意的事情」。假設編譯器不需要拒絕代碼,並且如果你正在尋找一個基本原理,那麼我會推測這是因爲發現這個錯誤需要少量的執行路徑分析,所以標準可能不希望強制要求。 – 2009-11-14 17:47:16