上一篇我們介紹了輸出的函式printf,大家應該對於列印結果可以自由應用了吧?
接下來我們介紹與之搭配的輸入函式scanf吧!
大家學到現在有沒有開始想一件事呢,寫程式的目的其實是為了解決問題,那麼處理資料時除了最後要輸出結果,還有一個重要的事情應該是要取得使用者輸入,我們才能在程式中彈性的處理資料,來解決某些麻煩吧!
今天我們來介紹一個用來讀取使用者輸入的函式--「scanf();」!
按照老慣例我們先來看一段程式碼:
#include <stdio.h>
int main(){
int data;
printf("plz input a number: ");
scanf("%d", &data);
printf("your data is %d.\n", data);
printf("the result of (data + 10) is %d.\n", data+10);
return 0;
}
輸出結果:
在我們輸入數字5之後:
這次讀取使用者輸入時,我們一樣要結合第六篇的變數、第七篇的格式,然後在變數之前記得加上「&」,情況大概有以下的:
#include <stdio.h>
int main(){
int data;
printf("plz input a int: ");
scanf("%d", &data);
printf("your data: %d\n", data);
return 0;
}
(2) 浮點數
#include <stdio.h>
int main(){
float data;
printf("plz input a float: ");
scanf("%f", &data);
printf("your data: %f\n", data);
return 0;
}
(3) 字元
#include <stdio.h>
int main(){
char data;
printf("plz input a char: ");
scanf("%c", &data);
printf("your data: %c\n", data);
return 0;
}
(4) 字串(之後會提到字串這個特別的資料類型)
#include <stdio.h>
int main(){
char data[20];
printf("plz input a str: ");
scanf("%s", &data);
printf("your data: %s\n", data);
return 0;
}
#include <stdio.h>
int main(){
int data1, data2, data3;
printf("plz input 3 int: ");
scanf("%d", &data1);
scanf("%d", &data2);
scanf("%d", &data3);
printf("your data: %d %d %d\n", data1, data2, data3);
return 0;
}
(2) 一次讀取
#include <stdio.h>
int main(){
int data1, data2, data3;
printf("plz input 3 int: ");
scanf("%d%d%d", &data1, &data2, &data3);
printf("your data: %d %d %d\n", data1, data2, data3);
return 0;
}
(可以看到分開讀取跟一起讀取看起來沒什麼差別,是因為scanf的預設分割符號就是空白鍵,只要遇到空白鍵scanf就會預設他已經是下一個讀取的輸入了,所以用enter鍵跟空白鍵來分開輸入的結果都會是一樣的。)
#include <stdio.h>
int main(){
int data1, data2, data3;
printf("plz input 3 int: ");
scanf("%d %d %d", &data1, &data2, &data3);
printf("your data: %d %d %d\n", data1, data2, data3);
return 0;
}
(2) 特殊符號分割
#include <stdio.h>
int main(){
int data1, data2, data3;
printf("plz input a Year-Month-Day: ");
scanf("%d-%d-%d", &data1, &data2, &data3);
printf("your data: %d %d %d\n", data1, data2, data3);
return 0;
}