计算输入一个单词的次数

标签 c

在多次尝试使我的程序正常运行后,我求助于你们。我想制作一个程序来计算输入特定单词的次数。该特定单词已指定为参数,我试图通过使用 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/

相关文章:

c - 在 C 中声明二叉树

c - 使用指针传递结构数组时遇到问题

c - 关于指针的奇怪的事情

c - 我在哪里可以找到有关在 C/linux 中为 USB 设备创建驱动程序的更多信息?

C 在进程执行结束时关闭两个管道

c - C 中的指针、malloc 和 char

C 程序没有打印正确的总和

c# - 来自现有 C API 的 SWIG C#

c++ - 添加和删​​除最后一位

c - 是否可以在不发送 RST 的情况下中止关闭套接字?