Эта программа должна найти аргументы командной строки, введенные в Unix, которая заканчивается на «.exe». По какой-то причине это не работает. Вот код:Сравнение символов в конце строки 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
Если вы используете компиляцию gcc try следующим образом: g ++ -Wreturn-type ..., чтобы увидеть проблему с вашим кодом. –
@Naveen: На самом деле, я не искал, является ли это ошибкой или нет, просто считается без доказательства того, что компилятор Пата в этом отношении совместим. Я имею в виду «должен» в смысле «это то, что компиляторы часто замечают». Предполагая, что компилятор не должен отклонять код, и если вы ищете обоснование, то я бы предположил, что это потому, что для обнаружения ошибки требуется крошечный анализ пути выполнения, поэтому, возможно, стандарт не хотел мандат. –