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.
$

上一頁 11.7.7 fprintf()
回 C 速查手冊 - 標準程式庫分類索引
下一頁 11.7.9 fgetc()
回 C 速查手冊 - 標準程式庫導覽
回 C 速查手冊首頁
回 C 教材首頁
回程式語言教材首頁