scanf()
輸入
使用scanf()函數輸入
讀取數字型態資料
一、讀取短整數short int
宣告:short int 變數;
語法:scanf ("%hd",&變數);
※&是位址指定字元,讀入數字型態資料必加,遇到空白、Tab或Enter結束。
二、讀取整數int
宣告:int 變數;
語法:scanf ("%d",&變數);
程式碼範例
#include<iostream>
main(){
int x;
printf("請輸入一個整數:");
scanf("%d",&x);
printf("%d\n",x);
return 0;
}
Input: 123、Output: 123
三、讀取兩個整數
宣告:int 變數1,變數2;
語法:scanf ("%d%d",&變數1,&變數2);
Ex:scanf()同時輸入兩整數 (等級:易)
以scanf語法輸入兩個整數,輸出這兩個整數的合。
程式碼範例
int x,y,sum;
printf ("請輸入兩個整數:");
scanf ("%d%d",&x,&y);
sum = x+y;
printf ("輸入合計為:%d\n",sum);
四、讀取長整數long int
宣告:long int 變數1;
語法:scanf ("%ld",&變數1);
五、讀取float
宣告:float 變數1;
語法:scanf ("%f",&變數1);
六、讀取double
宣告:double 變數1;
語法:scanf ("%lf",&變數1);
讀取字元型態資料
宣告:char 變數;
語法:scanf ("%c",&變數);
※&讀入字元型態資料也必加,讀入第一個輸入字元,空白、Tab或Enter也是一個字元。
程式碼
#include<iostream>
main(){
char ch;
printf("請輸入一個字元:");
scanf("%c",&ch);
printf("%c\n",ch);
return 0;
}
Input: A、Output: A
讀取字串型態資料
七、讀取字串:字元陣列。
宣告:char 變數[];
語法:scanf ("%s",變數);
※字串變數即變數記憶體開頭位置,不需要&,遇空白、Tab或Enter停止。
程式碼範例
#include<iostream>
main(){
char ch[80];
printf("請輸入一個字元:");
scanf("%s",ch);
printf("%s\n",ch);
return 0;
}
Input: ABC def、Output: ABC
※空白不會讀入※
scanf()讀入空白
一、使用控制字元
語法:scanf(“%[^c]”,字串變數);
※c:指定一個輸入結束符,包括控制字元。
範例1:讀到Enter為止
char str[10];
scanf("%[^\n]",str);
printf("%s\n",str);
Input: 123 abc =-01@!~
Output: 123 abc =-01@!~
二、使用格式符號的掃瞄集合字元
語法:scanf(“%[集合字元]”,字串變數);
※集合字元之間以減號「-」連接,以可單獨指定集合字元(例如:空白)。
範例2:只能輸入大小寫字母、數字、空白字元,遇到非數字和字母時輸入結束。
char str[10];
scanf("%[a-z A-Z0-9]",str);
printf("%s\n",str);
Input: abcDEF 456=
Output: abcDEF 456
重要概念
1.使用scanf()讀取數字或字元型態的資料時,變數前必須有位址指定字元&。
FIFO先進先出
字元緩衝區入口
字元緩衝區出口
2.連續讀取字元或字串之前,因為無法預期輸入長度(過多的會殘留在 buffer 內),所以必須將字元緩衝區(buffer)清除。
程式碼:使用迴圈讀取(清除)字元
while(getchar()!='\n')
continue;
清除緩衝區副程式呼叫寫法