这个程序应该找到在Unix上输入的以“.exe”结尾的命令行参数。由于某种原因,它不起作用。这是代码:
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;
}
答案 0 :(得分:6)
删除else
,我认为(虽然我没有编译代码来检查)。在长度至少为4但字符串比较返回非零的情况下,您将到达函数的末尾而不返回。你的编译器应该警告你:打开更多警告。
答案 1 :(得分:3)
你的findExe函数有一个不返回结果的分支....就像史蒂夫说的那样,编译器应该警告你。
答案 2 :(得分:0)
这个怎么样?
bool findExe( char* argument )
{
int n = strlen(argument);
if (n < 4) return false;
char* ext = argument[n-4];
if (strcmp(ext, ".exe") == 0) return true;
return false;
}