一般形式
函式名: fscanf
功 能: 從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。
返回值:整型,成功返回讀入的參數的個數,失敗返回EOF(-1)。
用法:
FILE *stream:檔案指針
char *format:格式字元串
[argument...]:輸入列表
格式字元說明
常用基本參數對照:
%d:讀入一個十進制整數.
%i :讀入十進制,八進制,十六進制整數,與%d類似,但是在編譯時通過數據前置或後置來區分進制,如加入“0x”則是十六進制,加入“0”則為八進制。例如串“031”使用%d時會被算作31,但是使用%i時會算作25.
%u:讀入一個無符號十進制整數.
%f %F %g %G : 用來輸入實數,可以用小數形式或指數形式輸入.
%x %X: 讀入十六進制整數.
%o': 讀入八進制整數.
%s : 讀入一個字元串,遇空字元‘\0'結束。
%c : 讀入一個字元。無法讀入空值。空格可以被讀入。
附加格式說明字元表修飾符說明
L/l 長度修飾符 輸入"長"數據
h 長度修飾符 輸入"短"數據
示例說明
如果要求從標準輸入中輸入一串字元串和一個整型數,那么參數“%s%d”表示什麼呢?默認情況下,在終端上(這裡假設程式為控制台應用程式)輸入第一個參數的值的時候敲下回車,則在第二行輸入的為第二個參數值,採用這種輸入方法那么格式字元的形式就無關緊要了。
這裡要特殊說明的是如果參數在同一行給出,那么格式字元的參數與終端的輸入會有什麼關係。舉個例子:如果格式字元為“%s+%d”,那么參數的輸入就應該為 string + integer。
程式例
例一
例二
附:MSDN中例子