在多次尝试使我的程序正常运行后,我求助于你们。我想制作一个程序来计算输入特定单词的次数。该特定单词已指定为参数,我试图通过使用 argc 和 argv 来调用它。然后我希望程序计算我输入一个单词的次数并完成我希望能够输入#EOF 以便它停止并显示结果。到目前为止,这是我一直在尝试的。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i=0;
char buf[1026]={'\0'};
char *p="#EOF\n";
fgets(buf, sizeof buf, stdin);
while((strcmp(buf, p) !=0) && (fgets(buf, sizeof buf, stdin) != NULL ))
{
if(strncmp(buf, argv[1], strlen(argv[1])) == 0)
{
i++;
}
}
printf("%d", i);
return 0;
}
我完全没有错误,但也没有真正发生。我确实尝试检查故障所在,我发现当我尝试在 if 语句中显示 I 的值时,它的计数非常非常非常快!
提前致谢!
最佳答案
嗯,第一个问题是 argv[0] 是你的程序名;您的参数从 argv[1] 开始。
此外,在您将任何内容放入 buf 之前会调用您的 while 循环。您肯定需要使用不同的循环或预先初始化 buf 以确保您的循环正常运行。
此外,我建议确保您确切知道什么应该匹配,什么不应该匹配。您正在根据要搜索的单词的长度进行子串比较 (strncmp),但这是您想要的吗?这将获取子字符串中的单词,但您想要那个还是整个单词?此外,用户是否会在每一行或可能出现该词的句子中键入一个词?大小写重要吗?
关于计算输入一个单词的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822858/