關於C語言中輸入字符的問題
問題舉例:
#include "stdio.h"
void main()
{
int a;
char c;
printf("請輸入年齡:");
scanf("%d",&a);
printf("請輸入性別:");
scanf("%c",&c);
……
}
問題就出在scanf("%c",&c)上
我知道前麵可以用一個getchar()把回車吃掉,但如果在%c前麵加一個空格也可以避免這個錯誤.。
原因:
scanf("<格式化字符串>",<地址表>);
格式化字符串有三種類型:
1)格式化說明符,%c,%d...
2、 空白字符: 空白字符會使scanf()函數在讀操作中略去輸入中的一個或多個空白字符。
3、 非空白字符: 一個非空白字符會使scanf()函數在讀入時剔除掉與這個非空白字符相同的字符。
所以呢,在%c的前麵必須有一個空格,否則係統會將你前麵輸入別的值之後鍵入的回車符讀入該變量,造成死循環。當然,如果scanf("%c",&varname)是第一條讀入語句,就可以不需要空格。
最後更新:2017-04-02 06:51:59