選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C stdio fscanf() 函式

❮ C stdio 庫


示例

從檔案中讀取字串

FILE *fptr;

fptr = fopen("filename.txt", "r");

char output[50];
fscanf(fptr, "%49s", output);
printf("%s", output);

fclose(fptr);

定義和用法

fscanf() 函式從檔案中讀取格式化資料,並將其寫入由引數指定的記憶體位置,然後將檔案指示器移動到它停止讀取的檔案位置。

fscanf() 函式定義在 <stdio.h> 標頭檔案中。

format 引數是一個字串,它描述了從檔案中期望的資料格式。如果檔案內容與格式不匹配,則函式將在第一個不匹配發生時停止讀取。

格式說明符

format 字串可以包含 **格式說明符**,這些說明符指定了應將資料寫入哪個引數。每個格式說明符對應於函式的一個附加引數。

格式說明符的形式為 %[*][width][length]specifier。方括號中的元件是可選的。

每個元件的解釋

  • * - 可選。當存在時,格式說明符不對應於引數。
  • width - 可選。指定此說明符要讀取的最大字元數。
  • length - 可選。一系列字元,用於更改引數的資料型別。它可以是以下之一
    • hh - 對於整數,期望 char* 型別。
    • h - 對於整數,期望 short* 型別。
    • l - 對於整數,期望 long int* 型別。
             對於字元和字串,期望 wchar_t* 型別。
             對於浮點數,期望 double* 型別。
    • ll - 對於整數,期望 long long int* 型別。
    • j - 對於整數,期望 intmax_t*uintmax_t* 型別。
    • z - 對於整數,期望 size_t* 型別。
    • t - 對於整數,期望 ptrdiff_t* 型別。
    • L - 對於整數,期望 long double* 型別。
  • specifier - 必需。一個字元或字串,指示如何解釋檔案資料。可能的說明符列表如下表所示。

說明符列表

字元 說明符 描述
iu 整數 讀取一系列數字並將其解釋為整數。如果序列以“0x”開頭,則期望十六進位制數字(0-9 和 A-F)。如果序列以“0”開頭,則期望八進位制數字(0-7)。序列可能以符號(“+”或“-”)開頭。
d 十進位制整數 讀取一系列數字(0-9)並將其解釋為整數。序列可能以符號(“+”或“-”)開頭。
o 八進位制整數 讀取一系列數字(0-7)並將其解釋為八進位制整數。序列可能以符號(“+”或“-”)開頭。
x 十六進位制整數 讀取一系列數字(0-9 和 A-F)並將其解釋為十六進位制整數。它可以以“0x”開頭。序列可能以符號(“+”或“-”)開頭。
f, e, ga 浮點數 讀取有效的字元序列並將其解釋為浮點數。有效序列至少有一個數字,前面可以有一個符號(“+”或“-”),後面可以跟一個小數點和十進位制數字。也可以使用科學記數法(一個數字後跟“e”或“E”和一些數字)。
c 字元 從檔案中讀取一個字元。如果指定了寬度,則讀取指定數量的字元。
s 字串 讀取檔案中直到下一個空白字元(空格、製表符、換行符)的所有字元。寫入引數的值將在其後附加一個 \0 空終止符。
p 指標 讀取一系列表示指標地址的字元。
n 無輸入 不從檔案中讀取任何內容。到目前為止已讀取的字元數將寫入該引數。該引數必須是指向整數的指標。
% 百分號 讀取一個字元,期望它是一個“%”符號。此說明符不與任何引數關聯。
[characters] 字元集 讀取一個字元,該字元與 characters 中指定的字元之一匹配。
[^characters] 排除字元集 讀取一個字元,該字元不在 characters 中指定的字元集中。

有關如何使用格式說明符的示例,請參閱下面的更多示例


語法

fscanf(FILE * fptr, const char * format, arg1, arg2...);

引數值

引數 描述
fptr 必需。一個檔案指標,通常由 fopen() 函式建立。
format 必需。一個字串,表示從檔案中期望的資料格式。
arg1, arg2... 可選。任意數量的附加引數,它們是指向可以寫入值的記憶體的指標。

技術詳情

返回 一個 int 值,表示已寫入的引數數量。如果發生錯誤,則返回常量 EOF

更多示例

示例

從包含序列“1 + 2 = 3”的檔案中提取數字

FILE *fptr;
fptr = fopen("filename.txt", "r");

int a, b, c;
fscanf(fptr, "%i + %i = %i", &a, &b, &c);
printf("a = %d \n", a);
printf("b = %d \n", b);
printf("c = %d \n", c);

fclose(fptr);

示例

從檔案中讀取十六進位制數字並以十進位制輸出其值

FILE *fptr;
fptr = fopen("filename.txt", "r");

int num;
fscanf(fptr, "%x", &num);
printf("%d", num);

fclose(fptr);

示例

在檔案中查詢下一個字元“x”、“y”或“z”

FILE *fptr;
fptr = fopen("filename.txt", "r");

char c;
int found = fscanf(fptr, " %[xyz]", &c);
if (found > 0) {
  printf("Found %c", c);
} else {
  printf("Character not found");
}

fclose(fptr);

❮ C stdio 庫

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援