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 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);