[C] scanf - 格式輸入函數

來源:互聯網
上載者:User

標籤:style   blog   color   使用   io   檔案   資料   div   

scanf 函數稱為格式輸入函數,即把使用者鍵盤輸入的內容儲存到指定的變數中。

 

scanf 函數簽名
scanf("格式控制字元串", 變數地址清單)

 

  scanf 函數是一個標準庫函數,函數原型位於 <stdio.h> 中。與 printf 函數相同,C語言允許隱式使用 scanf 函數,即可以不提前包含 <stido.h> 標頭檔。如果隱式使用 scanf 或 printf 函數,編譯時間系統會發出隱式調用警告。

  scanf 不能在控制台回顯非格式化預留位置字串,也就是說不能在控制台顯示輸入提示。

  scanf 第一個參數 “格式控制字元串” 可以分為兩部分,一部分為格式預留位置,另一部分為變數分隔字元。

 

格式預留位置
%[*][輸入資料寬度][長度]類型

 

  scanf 支援輸入的類型如下:

    1. d - 十進位整數

    2. o - 八進位整數

    3. x - 十六進位整數

    4. u - 無符號十進位整數

    5. f 或 e - 小數形式或指數形式的實型數

    6. c - 單個字元

    7. s - 字串

 

變數分隔字元

  變數分隔字元是指在輸入多個變數資料時用於分隔輸入資料的非格式預留位置。例如:

scanf("%dA%d", &a, &b)在控制台輸入:
123A456結果為:a = 123, b = 456

  

  其中 scanf 第一個參數中的 A 就是一個變數分隔字元。如果 scanf 第一個參數中沒有指明變數分隔字元,那麼系統預設空格符、Tab符或斷行符號符作為分隔字元,C編譯器在遇到這三個字元或者非法字元時,就認為輸入的資料結束。例如:

scanf("%d%d", &a, &b);在控制台輸入:123 456或者123456結果都是:a = 123, b = 456

 

scanf 函數執行個體1. 一般用法
int main(void) {    int a, b;    printf("Input a, b\n");    scanf("%d%d", &a, &b);    printf("a=%d, b=%d\n", a, b);    return 0;  }

 

  輸入與輸出:

$ ./a.out Input a, b123 456a=123, b=456

 

2. 使用 * 符號表示跳過該輸入值

  將上例代碼修改為:

scanf("%d%*d%d", &a, &b)

 

  輸入與輸出:跳過第二個輸入值 456, 將第三個輸入值 789 賦給了變數 b。

$ ./a.out Input a, b123 456 789a=123, b=789

 

3. 格式預留位置中限定資料寬度

  將上例代碼修改為:

scanf("%4d%4d", &a, &b);

 

  輸入與輸出:

$ ./a.out Input a, b12345 56789a=1234, b=5$ ./a.out Input a, b123456789a=1234, b=5678

 

  第一次輸入時,C程式直接截取了 12345 的前四位賦給了變數 a,然後從剩餘的 5 56789 中準備再截取四位賦給變數 b,但在第二個位置遇到了空格符,之前說過C程式是預設空格符為資料分隔字元,因此C程式認為該變數資料輸入結束,將 5 賦給了b。

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.