iT邦幫忙

1

【從零開始的 C 語言筆記】第九篇-scanf 介紹 & 結合printf的應用 (1)

  • 分享至 

  • xImage
  •  

不怎麼重要的前言

上一篇我們介紹了輸出的函式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;
}

輸出結果:
https://ithelp.ithome.com.tw/upload/images/20211026/20142565N5njA3WHar.png

在我們輸入數字5之後:
https://ithelp.ithome.com.tw/upload/images/20211026/20142565Qnj7591qCH.png


scanf的使用

這次讀取使用者輸入時,我們一樣要結合第六篇的變數、第七篇的格式,然後在變數之前記得加上「&」,情況大概有以下的:

  1. 取得單一變數之值
    (1) 整數
#include <stdio.h>

int main(){
    int data;
    printf("plz input a int: ");
    scanf("%d", &data);
    
    printf("your data: %d\n", data);
    
    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565qGWx2JkM2U.png

(2) 浮點數

#include <stdio.h>

int main(){
    float data;
    printf("plz input a float: ");
    scanf("%f", &data);

    printf("your data: %f\n", data);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211027/201425659Z9xRaQ6Eh.png

(3) 字元

#include <stdio.h>

int main(){
    char data;
    printf("plz input a char: ");
    scanf("%c", &data);

    printf("your data: %c\n", data);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565mjXfwqOTMd.png

(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;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565fqNzD9hQAy.png

  1. 取得多個變數之值
    (1) 分開讀取
#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;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565wseYCCd0Cz.png

(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;
}

https://ithelp.ithome.com.tw/upload/images/20211027/201425655V4t9AH4OZ.png

(可以看到分開讀取跟一起讀取看起來沒什麼差別,是因為scanf的預設分割符號就是空白鍵,只要遇到空白鍵scanf就會預設他已經是下一個讀取的輸入了,所以用enter鍵跟空白鍵來分開輸入的結果都會是一樣的。)

  1. 以特定格式取得不同變數
    (1) 空白鍵(等同樓上的2-(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;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565cZwITP8L8M.png

(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;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565KFxrpzhfuq.png


看到這裡就介紹完scanf的大致語法了,也同時放了很多範例code可以讓大家測試看看,不過printf與scanf的用法上,因為它們的語法過於類似了,想必大家會有一點小混亂吧?

所以下一篇我們來分析一下printf與scanf的差別,再來幫scanf做個小結吧,然後有個小作業可以做做看喔!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言