亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

簡單的C掃描不工作?

簡單的C掃描不工作?

C
繁星coding 2019-06-24 13:17:30
簡單的C掃描不工作?如果我嘗試這樣的東西:int anint;char achar;printf("\nEnter any integer:");scanf("%d", &anint);printf("\nEnter any character:");scanf("%c", &achar); printf("\nHello\n");printf("\nThe integer entered is %d\n", anint);printf("\nThe char entered is %c\n", achar);它允許輸入一個整數,然后跳過第二個整數。scanf完全來說,這真的很奇怪,就像我交換兩個(char(首先,它工作得很好。到底是怎么回事?
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

讀取輸入時使用scanf,則在按下返回鍵后讀取輸入,但返回鍵生成的換行符不被scanf,這意味著您下次讀到char從標準輸入將有一個換行符準備閱讀。

避免的一種方法是使用fgets將輸入讀入為字符串,然后使用sscanf作為:

char line[MAX];printf("\nEnter any integer:");if( fgets(line,MAX,stdin) && sscanf(line,"%d", &anint)!=1 ) 
   anint=0;printf("\nEnter any character:");if( fgets(line,MAX,stdin) && sscanf(line,"%c", &achar)!=1 ) 
   achar=0;

另一種使用換行符的方法是scanf("%c%*c",&anint);..這個%*c將從緩沖區讀取換行符并丟棄它。

您可能需要閱讀以下內容:

常見問題:為什么每個人都說不使用scanf?


查看完整回答
反對 回復 2019-06-24
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

其他答案是正確的-%c不跳過空格。最簡單的方法是將空格放在%c:

scanf(" %c", &achar);

(格式字符串中的任何空格都會使scanf使用所有連續空格)。


查看完整回答
反對 回復 2019-06-24
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

呼叫getchar()以前scanf也將清除存儲的行中斷。更輕巧,但更符合實際情況

char input_1;char input_2;getchar();scanf("%c", &input_1);getchar();scanf("%c", &input_2);

將刷新換行符,在連續的代碼行中更有用,在這些代碼中,您知道它只是一個排隊的值,而不是一個字符串。


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 383 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號