首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用getchar()函数

使用getchar()函数
EN

Stack Overflow用户
提问于 2013-11-30 23:21:42
回答 2查看 135关注 0票数 0

我使用getchar()来停止while字符串。我的问题是,如果我输入一个或两个字符,它会停止while字符串,如果用户输入的字符超过两个,则不会发生任何事情。

代码如下:

代码语言:javascript
复制
printf("enter srting\n");

while ((tmp=getchar()) !='\n') { \\here is my problem

    count_letters++;
        /* COUNTING WORD THAT START WITH LETTES L,A,C,H */

    while (count_letters%3==0) {
        switch (tmp) {
            case 'A': count_a++;
                break;
            case 'C': count_c++;
                break;
            case 'H': count_h++;
                break;
            case 'L': count_l++;
            default:
                break;
        }
    } /* end of count letters while  */

    n1=n2;
    n2=n3;
    n3=tmp;

    if (n1=='H' && n2=='Y' && n3=='A') {
        count_hya++;
    }



    } /* end of getchar while */
printf("\n");

printf("%d", count_letters);
EN

回答 2

Stack Overflow用户

发布于 2013-11-30 23:43:14

  1. 我相信这是你的代码:"while (count_letters%3==0))“有问题!
  2. 因为当你输入三个以上的字母时,你的变量"count_letters”会加到3,因为你可以把"while“改为" if”,看看它是否正常工作~
票数 1
EN

Stack Overflow用户

发布于 2013-11-30 23:41:19

以下是问题所在:

代码语言:javascript
复制
while (count_letters%3==0) {
        switch (tmp) {
            case 'A': count_a++;
                break;
            case 'C': count_c++;
                break;
            case 'H': count_h++;
                break;
            case 'L': count_l++;
            default:
                break;
        }
}

当您的第三个字符被读取时,您的程序由于(count_letters%3==0)而进入无限循环。

我不明白你代码的目的。我建议使用get()和字符串操作函数,因为您正在处理一整行。(请参阅string.h.h)

与get()+ for-loop相比,getchar()的效率也较低

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20301897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档