-1
#include <stdio.h>
int hledejznak(x)
{
    int c;
    int pocitadlo=0;
    while((c=getchar())!=EOF)
    {
        if(x==c){
            pocitadlo++;
            while((c=getchar())!=32)
            {
                printf("%d\n",c);
            };
        };
    };

    return pocitadlo;
}

int main(int argc,char *argv[])
{
    int znak=*argv[1];
    printf("answer is %d",hledejznak(znak));
    return 0;
}

大家好,我需要计算包含在终端示例中指定为参数的字符的单词:echo 'hello babe' | ./main e

答案是 2

....因为有两个单词包含字母“e” 我的代码不起作用,你能帮帮我吗?谢谢

4

1 回答 1

2
  1. 不要嵌套循环;保持处理每个字符的外部读取
  2. 每当您看到所需的字符时,将布尔变量初始化为 false 并设置为 true。
  3. 每当一个单词结束时,如果标志为真,则增加您的计数器。无论哪种方式,将标志设置为 false(为下一个单词做好准备)。(请注意,最后一个单词不能以空格结尾。)
  4. 只有当您处理完所有输入后,您才应该打印计数器的值。
于 2013-11-11T00:14:36.180 回答