共用方式為


格式規格欄位: scanfwscanf 函式

此處的信息適用於整個 scanf 函式系列,包括安全版本。 它會描述用來告訴 scanf 函式如何將輸入數據流,例如輸入數據流 stdin剖析成插入程式變數的值中的符號。

format 變數是一個字串,指定輸入的解譯,而且可以包含一或多個:

  • 空格符:空白( ;製表符)\t或換行符(\n)。 空白字元會使得 scanf 讀取 (但不儲存) 輸入中的所有連續空格字元,一直到下一個非空白字元。 格式中一個空格字元會比對輸入中任何數字 (包括 0) 和空白字元的組合。

  • 不含百分比符號 (%) 的非空白字元。 非空白字元會使得 scanf 讀取 (但不儲存) 符合的非空白字元。 如果輸入數據流中的下一個字元不相符,則會 scanf 終止。

  • 格式規格,由百分比符號 (%) 引入。 格式規格會使 scanf 輸入中的字元讀取和轉換成指定類型的值。 值會指派給引數清單中的引數。

    格式規格的格式如下︰

    %[*][width][{hll||Ll|I64|}]type

    在這裡,、widthhlllI64L 代表scanf寬度規格,並type代表scanf類型欄位字元

format 變數字串會從左至右讀取。 格式規格以外的字元應該符合輸入數據流中的字元序列。 會掃描輸入數據流中的相符字元,但不會儲存。 如果輸入數據流中的字元與格式規格衝突, scanf 則會終止字元,而且字元會留在輸入數據流中,就好像尚未讀取一樣。

遇到第一個格式規格時,會根據此規格轉換第一個輸入字段的值。 這個值會儲存在自變數後面的 format 第一個自變數所指定的位置。 第二個格式規格會導致第二個輸入字段透過格式字串的結尾轉換並儲存在下一個自變數中,依此儲存。

輸入欄位定義為:所有字元最多到第一個空格元(空格、製表元或換行符),或直到無法根據格式規格轉換的第一個字元,或直到達到欄位寬度(如果指定的話) 為止。 如果指定的規格有太多引數,額外的引數會予以評估但忽略。 如果格式規格沒有足夠的自變數,則結果無法預測。

每個格式規格的欄位都是單一字元,或表示特定格式選項的數字。 type 字元出現在最後一個選擇性格式欄位之後,決定將輸入欄位解譯為字元、字串或數字。

最簡單的格式規格只包含百分比符號和一個 type 字元 (例如 %s)。 如果百分比符號 (%) 後面接著沒有意義的字元做為格式控制字元,該字元和下列字元(最多下一個百分比符號)會被視為一般字元序列。 也就是說,它們會被視為必須符合輸入的字元序列。 例如,指定要輸入百分比符號字元,請使用 %%

星號 (*) 跟在百分比符號後面會抑制指派下一個輸入欄位,解譯為指定類型的欄位。 欄位會掃描,但不會儲存在自變數中。

系列函式的安全版本(後_s綴為的函式)scanf需要 、、 sS[ 類型的cC每一個參數,才能立即傳遞緩衝區大小參數。 如需系列函式安全版本scanf的詳細資訊,請參閱scanf_s 、、_scanf_s_lwscanf_s_wscanf_s_l

另請參閱

scanf 寬度規格
scanf 輸入欄位字元
scanf、 、 _scanf_lwscanf_wscanf_l
scanf_s、 、 _scanf_s_lwscanf_s_wscanf_s_l