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;

清除緩衝區副程式呼叫寫法