无法更改char变量的值

时间:2015-05-15 17:26:09

标签: c

#include<stdio.h>
#include<conio.h>

void main()
{
    char c;
    int i;
    clrscr();
    scanf("%c",&c);
    scanf("%c",&c);
    printf("%c",c);
    getch();
}

该程序第二次不接受char c的值,但在整数变量的情况下它可以正常工作。为什么这样?

2 个答案:

答案 0 :(得分:1)

%c之前添加额外的空格:

 scanf(" %c",&c);

这是因为在之前的scanf中,您输入了字符,然后输入了换行符\n。因此,在第一个scanf中,存储了字符,而在第二个scanf中存储了换行符。

或者,您可以使用getchar存储换行符。在第二个getchar()之前和第一个scanf之后添加scanf

答案 1 :(得分:1)

这是因为当你输入第一个字符时,你可能会用换行符结束它,并且该换行符仍在输入缓冲区中,因此下一个scanf调用将读取该换行符。因此,当您打印它时,它会打印换行符。

您可以通过在格式scanf之前添加单个空格来告诉" %c"丢弃主要空格。