【发布时间】:2020-03-14 09:52:47
【问题描述】:
#include <stdio.h>
int strcompare (char*);
int main (int argc, char *argv[])
{
int argIndex;
for(argIndex = 1; argIndex <= argc; argIndex++)
{
strcompare(argv[argIndex]);
printf("%s has %d letters in it\n", argv[argIndex], strcompare(argv[argIndex]));
}
return 0;
}
int strcompare (char *str)
{
int index, letterDex = 0;
for (index = 0; *str != '0'; index++)
{
letterDex++;
}
}
任务是计算一个单词中的字母个数,编译时没有任何错误,但是当我尝试运行它时,它根本不起作用
./cma_length noah bruh conner
当我按下回车键后什么也没有。
【问题讨论】:
-
你应该从你的编译器中得到至少一个警告。如果您没有打开所有警告。
-
strcompare返回是什么意思?更重要的是,strcompare是否返回 anything ?然而它声称它会吗?另外,检查for条件。你知道这将一直运行直到遇到硬 digit 字符'0',不受其他任何限制,并且由于您在输入中没有提供包含'0'数字字符的此类字符串,因此您的代码将通过它们的字符串结尾终止符运行并脱离未定义行为的悬崖。你确定你的意思不是要在终结符而不是数字-'0'上停止吗? -
您的代码编译时不会出现
gcc -Wall的错误。我收到warning: control reaches end of non-void function [-Wreturn-type]。
标签: c pointers command-line-arguments