幕布斯6054654
2021-01-12 15:15:27
連續(xù)兩個scanf,ex:printf("Y or N?");scanf("%c",a);printf("Y or N?);scanf("%c",b);會出現(xiàn)第二個被省略的現(xiàn)象,我去網(wǎng)上查說,第二個%c加空格,即可,我試了,的確行,他還說是緩存問題。。那為什么只有%c這樣呢?還有+空格跟清除緩存有什么關系?
2 回答

隔江千里
TA貢獻1906條經(jīng)驗 獲得超10個贊
第一,你的程序有問題
scanf("%c",&a);//這里要&(取地址符)
第二,為什么第二個會被忽略的問題是因為,第一次輸入的時候,回車鍵會滯留在輸入緩沖區(qū),第二次要去輸?shù)臅r候,會直接去讀回車鍵
在第二次要去輸入的時候,可以先清除緩沖區(qū),用getchar(),或者用fflush(stdin)
printf("Y or N?");
scanf("%c",&a);
getchar();//或者fflush(stdin);
printf("Y or N?);
scanf("%c",&b);

暮色呼如
TA貢獻1853條經(jīng)驗 獲得超9個贊
首先scanf應該這樣用 scanf("格式化字符串",變量地址)你的用法是錯誤的
"%c"只從輸入緩沖里讀一個字符,但是你在輸入的時候不只一個字符,剩下的字符(包括回車)就留給第二個"%c"了
解決方法:
printf("Y or N?");
scanf("%c\n",&a);
fflush(stdin);
printf("Y or N?);
scanf("%c\n",&a);
fflush(stdin);
添加回答
舉報
0/150
提交
取消