1. 程式人生 > 其它 >C語言scanf函式的使用注意情況

C語言scanf函式的使用注意情況

情況1

在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔則可用空格,TAB或回車作間隔,若有其間有非格式字元則要原樣輸出C編譯在碰到非法資料(如對"%d"輸入"12A"時,A即為非法資料)時即認為該資料結束。

   /*scanf special use case 1*/

    int h, w;

printf("please,input height and width:");

/*下述兩種寫法在輸入資料時效果一致*/

scanf("%d%d", &h, &w);

scanf("%d %d", &h, &w);

/*中間有非格式字元*/

scanf("%da%d", &h, &w);

printf("height:%d;width:%d",h,w);

情況2

字串輸入遇到空白字元就停止讀取了,如輸入abcd asdf,只輸出abcd

    /*scanf special use case 2*/

char s[20];

printf("please input a sentence:");

scanf("%s", &s);

printf("s:%s", s);

情況3

獲取字元輸入的特殊情況。假設輸入1回車之後程式就結束了,不會如我們所意等待第二個引數的輸入,因為通過鍵盤標準輸入後,資料暫存在一個叫快取區的地方,

scanf快取區拿資料,輸入1後的回車也是個字元\n因此兩個字元分別兩次被拿走,只有快取區為空才會等待使用者輸入。

   /*scanf special use case 3*/

    printf("please input a number1:");

char num1;

scanf("%c", &num1);

printf("num1:%c", num1);

printf("\n");

printf("please input a number2:");

char num2;

scanf("%c", &num2);

printf("\n");

printf("num2:%c", num2);

情況4

下面這種情況就是和情況3一樣的,格式控制%c%c中間必須有空格%c %c隔開,否則我們輸入的空格就被賦給了ch2

    /*scanf special use case 4/

printf("please input two character:");

char ch1, ch2;

scanf("%c%c", &ch1, &ch2);

printf("ch1:%c ch2:%c\n", ch1, ch2);