
C 速查手冊
11.7.8 fscanf()
stdio.h 的函數 (function) fscanf() 從檔案取得格式化字串 (string) 。有如下可指定的轉換格式
| %d | 有正負號的十進位整數 | int * |
| %i | 有正負號的十進位整數 | int * |
| %u | 無正負號的十進位整數 | int * |
| %o | 無正負號的八進位整數 | int * |
| %x, %X | 無正負號的十六進位整數 | int * |
| %c | 字元 | char |
| %s | 字串 | char * |
| %f | 浮點數 | double |
| %p | 記憶體位址的編碼 | void * |
| %% | 百分比符號 | % |
fscanf() 可接受多個參數 (parameter) ,至少要有第一個指向結構 (structure) FILE 的指標 (pointer),以及第二個所要輸入的格式化字串,隨後接依格式化字串中轉換格式的數量相對應的參數,這是說,如果格式化字串中用了三個轉換格式,其後就需要另外三個對應的參數。
以下程式示範 fscanf() 的使用,假設 oldname.txt 中有 She is 19 years old. 的文字
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fPtr;
char c1[20], c2[20], c4[20], c5[20];
int c3;
fPtr = fopen("oldname.txt", "r");
if (!fPtr) {
printf("檔案開啟失敗...\n");
exit(1);
}
fscanf(fPtr, "%s%s%d%s%s", c1, c2, &c3, c4, c5);
fclose(fPtr);
printf("%s %s %d %s %s\n", c1, c2, c3, c4, c5);
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:cfscanf.c
功能:示範 stdio.h 中函數 fscanf() 的使用
作者:張凱慶 */
編譯後執行,結果如下
| $ gcc cfscanf.c |
| $ a.out |
| She is 19 years old. |
| $ |
