scanf() - C語言庫函式


C庫函式 int scanf(const char *format, ...)  讀取從標準輸入格式的輸入。 

宣告

以下是宣告scanf()函式的功能。

int scanf(const char *format, ...)

引數

  • format -- 這是C的字串,其中包含以下各項中的一個或多個:

    空白字元,非空白字元和格式說明。格式說明符如: [=%[*][width][modifiers]type=] 詳細說明如下:

引數 描述
* 這是一個可選的星號表示該資料是從流中被讀取的,但忽略,即,它不會儲存在相應的引數。
width 這指定在當前讀出操作被讀取的最大字元數
modifiers Specifies a size different from int (in the case of d, i and n), unsigned int (in the case of o, u and x) or float (in the case of e, f and g) for the data yiibaied by the corresponding additional argument: h : short int (for d, i and n), or unsigned short int (for o, u and x) l : long int (for d, i and n), or unsigned long int (for o, u and x), or double (for e, f and g) L : long double (for e, f and g)
type 的字元,指定將要讀取的資料的型別以及它是如何被讀取。請參閱下表。

fscanf型別說明:

型別 合格輸入 引數型別
c 單字元:讀取下一個字元。如果不同寬度從1被指定,函式讀取字元寬度,並將它們儲存在連續位置的陣列作為引數傳遞。沒有空字元在末尾追加。 char *
d 十進位制整數:號碼任意前面有+或 - 號 int *
e,E,f,g,G 浮點十進位制數的小數點,可選擇前面+或 - 號,可以選擇後跟e或E字元和一個十進位制數。兩個有效條目的範例是-732.103和7.12e4 float *
o 八進位制整數 int *
s 一串字元。這將讀取後續字元,直到找到一個空格(空格字元被認為是空白,換行符和標籤)。 char *
u 無符號整數。 unsigned int *
x,X 十六進位制整數 int *
  • additional arguments -- 根據格式字串,函式可能會想到一系列的額外的引數,每個包含一個值,而不是插入的格式引數中指定的標記每個%標籤,如果有的話。應該有相同數量的%預期值的標籤的數量的這些引數的。

返回值

如果成功,寫入的字元的總數被返回,否則返回一個負數。

例子

下面的例子演示了如何使用 scanf() 函式功能。

#include <stdio.h>

int main()
{
   char str1[20], str2[30];

   printf("Enter name: ");
   scanf("%s", &str1);

   printf("Enter your website name: ");
   scanf("%s", &str2);

   printf("Entered Name: %s
", str1);
   printf("Entered Website:%s", str2);
   
   return(0);
}

讓我們編譯和執行上面的程式,這將在互動模式下產生以下結果:

Enter name: admin
Enter your website name: www.tw511.com

Entered Name: admin
Entered Website: www.tw511.com