目錄
scanf()
scanf是從標準輸入緩衝區中讀取輸入的數據。
scanf格式輸入時要求輸入格式與格式控制符中的完全一樣,比如:
scanf("abcd%c",&ch);輸入時必須輸入abcde,ch得到的值爲e;
scanf("%d%d",&x,&y);時,輸入必須爲10 20(注:10和20之間要用空格,回車或TAB鍵之中的任選一種隔開);
scanf("%d,%d",&x,&y);時,輸入必須爲10,20;
scanf("%d+%d",&x,&y);時,輸入必須爲10+20;
%c的字符輸入格式
scanf是從標準輸入緩衝區中讀取輸入的數據,而%c的字符輸入格式會接收回車字符。
問題
#include<stdio.h>
int main(void){
char a[100];
char k;
int loc;
printf("請輸入字符串:");
scanf("%s",a);
printf("n請輸入要插入的字符:");
scanf(" %c",&k);
printf("n請輸入要插入的位置:");
scanf("%d",&loc);
return 0;
}
在輸入第一個scanf時,輸入字符後按回車結束,輸入緩衝中保存了這個回車符,遇到第二個scanf時,它自動把這個回車符賦給了k。而如果第二個scanf的輸入格式不是%c時,由於格式不匹配,這個回車符會被自動忽略,所以只有在連續輸入兩個字符格式時纔會出現這樣的問題!
解決方法(任選其一)
1. 清空輸入緩衝區
在第一個scanf後加入語句:fflush(stdin); //C語言清空輸入緩衝區函數。
2. 格式控制中加入空格
將第二個scanf改爲:scanf(" %c",&ch2);//在%號前面加一個空格。scanf格式輸入時要求輸入格式與格式控制符中的完全一樣(如:scanf("abcd%c",&ch);輸入時必須輸入abcde,ch得到的值爲e)空格可以抵消前面輸入的回車符。
%d的字符輸入格式