1

这里有什么问题?scanf 似乎不在 while 循环中工作。我试图找出元音和辅音,直到用户想要。

这是代码:

#include <stdio.h>
main()
{
    char x,c;
    do
    {
        printf("enter\n");
        scanf("%c",&x);
        if(x=='a'||x=='e'||x=='i'||x=='o'||x=='u')
            printf("vowel\n");
        else
            printf("consonent\n");

        printf("do u want to continue ?(y/n)\n");
        scanf("%d",&c);
        if(c=='n')
            printf("thnks\n");

    } while(c=='y');
    return 0;
}
4

6 回答 6

6

您正在尝试读取%d错误的字符。改为使用%c

于 2013-02-27T17:18:40.530 回答
2

将代码更改为scanf("%c",&c)原始代码将 y/n 条目作为数字而不是字符

编辑:

可能你得到的是carage return而不是角色尝试使用getcorfgets而不是获得第一个角色。

于 2013-02-27T17:19:11.557 回答
1

我认为问题可能出在此处: scanf("%d",&c); 它应该是:

    scanf("%c",&c);
于 2013-02-27T17:20:29.713 回答
1

这是正确的代码:

#include <stdio.h>

int main()
{
    char x,c;
    do
    {
        printf("enter\n");
        scanf("%c",&x);
        getchar(); //to remove the \n from the buffer
        if(x=='a'||x=='e'||x=='i'||x=='o'||x=='u')
            printf("vowel\n");
        else
            printf("consonent\n");
        printf("do u want to continue ?(y/n)\n");
        scanf("%c",&c); //Here you were using %d instead of %c
        getchar(); //to remove the \n from the buffer

        if(c=='n')
            printf("thnks\n");
    }while(c=='y');

    return 0;
}
于 2013-02-27T17:24:18.090 回答
0

两个scanfs都应该这样改变:

scanf(" %c",&x);

...

scanf(" %c",&c);

注意 之前的空格,这很重要:它消耗前导空格,其中包括处理输入后%剩余的结束行字符。stdin

于 2013-02-27T17:56:26.440 回答
-1

请尝试使用此代码多次运行循环。

编辑:没有fflush(stdin). 请定义一个 8 个字符的字符串为

char str[8];

并将循环中的代码修改为

fgets(str, 8, stdin); // To read the newline character
printf("do u want to continue ?(y/n)\n");

scanf("%c",&c);
fgets(str, 8, stdin); // To read the newline character
于 2013-02-27T17:25:25.740 回答