### scanf關鍵字
scanf標準函數可以從鍵盤得到用戶輸入的數字并記錄到存儲區里
這個標準函數是包含在stdio.h的頭文件中的,因此需要在文件頭部預處理這個頭文件
#include <stdio.h>
scanf函數調用語句里需要使用存儲區的地址表示存儲區
scanf函數調用語句里需要使用占位符表示存儲區的類型
int snum = 0;
scanf("%d", &snum);
scanf函數調用語句雙引號里不要寫不是占位符的內容,否則就會出現一些不必要的麻煩
scanf("%d\n", &snum); // 這樣的情況是不允許的
可以在一條scanf函數調用語句中獲得多個數字
int num1 = 0;
int num2 = 0;
scanf("%d%d", &num1, &num2); // 默認使用空格來分割輸入的,也就是說,輸入多個整型的時候使用空格作為分隔符
例如:輸入的數據類型不相同的時候
int num1 = 0;
int num2 = 0;
scanf("%d%d", &num1, &num2);
如果用戶輸入的第一個數(num1)不是整型類型,而輸入的是浮點類型的話,那么num2就不會有變化
scanf標準函數工作的時候需要使用輸入緩沖區。
用戶在鍵盤上輸入的內容首先進入輸入緩沖區,然后才能進入存儲區。
先進入輸入緩沖區的數字必須先被處理。
如果用戶輸入數據的格式和計算機要求的格式不一樣,則后面輸入的數字就沒有機會被處理了,就卡在了錯誤的數據類型的那個數字哪里。
/*
輸入緩沖區演示
*/
#include <stdio.h>
int main(){
int num = 0, num1 = 0;
printf("請輸入一個數字:");
scanf("%d", &num);
printf("數字是%d\n", num);
printf("請輸入一個數字:");
scanf("%d", &num1);
printf("數字是%d\n", num1);
return 0;
}
返回結果:
lanyulei@lanyulei-c:~/learn/biaoc/20180405/demo4$ ./a.out
請輸入一個數字:1.1
數字是1
請輸入一個數字:數字是0
以下兩個語句可以把輸入緩沖區里的第一個"\n"之前的內容和這個"\n"字符一起刪除:
scanf("%*[^\n]");
scanf("%*c");