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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。