格式規格的欄位: scanf 和 wscanf 函式
這裡的資訊適用於整個scanf系列的函式,包括安全版本,並說明用來告訴符號scanf函式如何剖析輸入資料流,例如輸入資料流stdin的scanf,為插入至程式變數的值。
格式規格都採用下列格式:
%*] width [{h | l | ll |I64 |L}]type
format引數指定的輸入解譯,而且可以包含一或多項動作:
空白字元: 空白 (' ')。 定位點 ('\t')。 或新行 ('\n')。 泛空白字元會讓scanf讀取,但不儲存所有輸入往上到下一步的 non–white 空白字元的連續空格字元。 格式中的一個空格字元比對任何數字 (包括 0) 和空格輸入字元的組合。
Non–white 空格字元,而除了的百分比符號 (%)。 Non–white 空白字元會讓scanf讀取,但不儲存,相符的 non–white 空間字元。 如果在輸入資料流中的下一個字元不符合, scanf會終止。
格式規格,引入百分比符號 (%)。 格式規格會讓scanf閱讀和輸入中的字元轉換成指定型別的值。 將值指派給引數清單中的引數。
格式是從左到右讀取。 以外的格式規格的字元都必須符合的輸入資料流 ; 字元順序 比對的字元中輸入資料流是掃描,但不是儲存。 若輸入資料流中的字元格式規格有衝突scanf結束時,與該字元處於輸入資料流,如同它已被讀取。
第一個輸入欄位的值發生的第一個格式規格時,便是根據這項規格轉換,而由第一個指定的位置儲存argument。 第二個格式規格會導致轉換後才能儲存在第二個第二個輸入的欄位argument,以此類推到格式字串的結尾。
輸入的欄位定義為回到第一個泛空白字元 (空格、 tab 或換行) 的所有字元或進位到第一個字元不能被轉換成根據 「 格式 」 規格或才將欄位寬度 (若有指定) 為止。 如果沒有指定之規格的引數太多,額外的引數會評估,但是忽略。 結果會產生無法預期,如果沒有足夠的引數的格式規格。
每個欄位的格式規格是單一字元或數字,表示特定的格式選項。 type字元,最後一個選擇性的格式欄位之後顯示,請決定是否在輸入的欄位會被解譯為字元、 字串或數字。
最簡單的格式規格包含百分比的符號和type字元 (例如, %s)。 如果百分比符號 (%) 後面的字元有沒有意義,為控制項的格式字元的字元,並將下列的字元 (最多至下一個百分比符號) 視為一般的順序的字元,也就是必須符合輸入的字元序列。 例如,若要指定要輸入一個百分比符號,請使用%%。
星號 (*) 百分比符號後面會隱藏工作分派的下一個輸入欄位,會被解譯為指定之型別的欄位。 此欄位是掃描,但不是儲存。
安全的版本 (具有_s後置字元) 的scanf函式家族需要傳遞緩衝區大小參數時,會立刻接續型別的每個參數c, C, s, S或[。 如需有關的安全版本scanf函式家族,請參閱scanf_s、 _scanf_s_l、 wscanf_s、 _wscanf_s_l。