C++ 中的fscanf() 函數用於從文件流中讀取數據。
fscanf()原型
int fscanf( FILE* stream, const char* format, ... );
fscanf()
函數從文件流中讀取數據並將值存儲到相應的變量中。
它在<cstdio> 頭文件中定義。
參數:
stream
:用於從中讀取數據的輸入文件流。format
: 指向指定如何讀取輸入的以空字符結尾的字符串的指針。它由以 % 開頭的格式說明符組成。格式字符串包含以下部分:
Non whitespace characters
除了 % 每個都消耗輸入流中的一個相同字符。如果流中的下一個字符比較不相等,可能會導致函數失敗。Whitespace character
:所有連續的空白字符都被視為單個空白字符。此外,'\n'、'\t'和''被認為是相同的。Conversion specification
: 它遵循以下格式:- 指定開頭的初始 % 字符
- 一個可選的 * 稱為 assignment-suppressing 字符。如果此字符存在,fscanf() 不會將結果分配給任何接收參數。
- 一個可選的正整數,指定最大字段寬度。它指定fscanf() 在進行當前轉換規範指定的轉換時允許使用的最大字符數。
- 一個可選的長度修飾符,指定接收參數的大小。
- 轉換格式說明符。
格式說明符 說明 % 匹配文字 % c 匹配單個字符或多個字符。如果定義了寬度,則完全匹配寬度字符。 s 匹配連續的非空白字符。如果定義了寬度,則完全匹配寬度字符或直到找到第一個空格。 [放] 匹配給定字符集中的非空字符序列。如果^出現在 set 的開頭,則匹配所有不在 set 中的字符。 d 匹配十進製整數。 i 匹配一個整數。 o 匹配一個無符號八進製整數。 X 或 x 匹配無符號十六進製整數。 u 匹配無符號十進製整數。 A 或 a、E 或 e、F 或 f、G 或 g 匹配一個浮點數。 n 返回到目前為止讀取的字符數。 p 匹配定義指針的實現定義的字符序列。
%[*][width][length]specifier
- …:接收數據的其他附加參數。它們根據格式說明符按順序出現。
返回:
- 如果成功,
fscanf()
函數將返回成功分配的接收參數的數量。 - 如果在分配第一個接收參數之前發生匹配失敗,則返回零。
- 如果在分配第一個接收參數之前發生輸入失敗,則返回 EOF。
示例:fscanf() 函數的工作原理
#include <cstdio>
int main ()
{
FILE *fp;
char name[50];
int age;
fp = fopen("example.txt","w");
fprintf(fp, "%s %d", "Tim", 31);
fclose(fp);
fp = fopen("example.txt","r");
fscanf(fp, "%s %d", name, &age);
fclose(fp);
printf("Hello %s, You are %d years old\n", name, age);
return 0;
}
運行程序時,可能的輸出將是:
Hello Tim, You are 31 years old
相關用法
- C++ fstream close用法及代碼示例
- C++ fstream swap用法及代碼示例
- C++ fseek()用法及代碼示例
- C++ fstream is_open用法及代碼示例
- C++ fsetpos()用法及代碼示例
- C++ fstream rdbuf用法及代碼示例
- C++ fstream open用法及代碼示例
- C++ fcvt()用法及代碼示例
- C++ fwscanf()用法及代碼示例
- C++ fmax()用法及代碼示例
- C++ fdim()用法及代碼示例
- C++ fmin()用法及代碼示例
- C++ fetestexcept()用法及代碼示例
- C++ forward_list::unique()用法及代碼示例
- C++ forward_list::emplace_front()用法及代碼示例
- C++ fopen()用法及代碼示例
- C++ forward_list::max_size()用法及代碼示例
- C++ forward_list::reverse()用法及代碼示例
- C++ feupdateenv()用法及代碼示例
- C++ forward_list::swap()用法及代碼示例
注:本文由純淨天空篩選整理自 C++ fscanf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。