scanf() 總結

目錄

scanf()

%c的字符輸入格式

問題

解決方法(任選其一)

%d的字符輸入格式

%s的字符輸入格式


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的字符輸入格式

 

%s的字符輸入格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章