閱讀842 返回首頁    go 小米 go 小米6


關於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

  上一篇:go SQL與Excel導入導出
  下一篇:go undefined reference to `__android_log_print&#39;