当前位置: 首页 > 文档资料 > C 标准库 中文版 >

int fscanf(FILE *stream, const char *format, ...)

优质
小牛编辑
143浏览
2023-12-01

描述 (Description)

C库函数int fscanf(FILE *stream, const char *format, ...)从流中读取格式化输入。

声明 (Declaration)

以下是fscanf()函数的声明。

int fscanf(FILE *stream, const char *format, ...)

参数 (Parameters)

  • stream - 这是指向标识流的FILE对象的指针。

  • format - 这是包含以下一项或多项的C字符串 - Whitespace character, Non-whitespace characterFormat specifiers 。 格式说明符将为[=%[*][width][modifiers]type=] ,如下所述 -

Sr.No.论点和描述
1

*

这是一个可选的起始星号表示数据将从流中读取但被忽略,即它不存储在相应的参数中。

2

width

这指定了当前读取操作中要读取的最大字符数。

3

modifiers

指定不同于int的大小(在d,i和n的情况下),unsigned int(在o,u和x的情况下)或float(在e,f和g的情况下)指向的数据相应的附加参数:h:short int(对于d,i和n),或unsigned short int(对于o,u和x)l:long int(对于d,i和n),或unsigned long int(对于o, u和x),或加倍(对于e,f和g)L:长双(对于e,f和g)

4

type

一个字符,指定要读取的数据类型以及预期读取的方式。 见下表。

fscanf类型说明符

类型合格的输入参数类型
c单个字符:读取下一个字符。 如果指定的宽度不同于1,则该函数读取宽度字符并将它们存储在作为参数传递的数组的连续位置中。 最后不附加空字符。char *
d十进制整数:数字可选地以+或 - 符号开头int *
e, E, f, g, G浮点:包含小数点的十进制数字,可选地前面带有+或 - 符号,可选地后跟e或E字符和十进制数字。 有效条目的两个示例是-732.103和7.12e4float *
o八进制整数:int *
s字符串。 这将读取后续字符,直到找到空格(空格字符被视为空白,换行符和制表符)。char *
uUnsigned decimal integer.unsigned int *
x, X十六进制整数int *
  • additional arguments - 根据格式字符串,该函数可能需要一系列附加参数,每个参数包含一个要插入的值,而不是format参数中指定的每个%-tag(如果有)。 这些参数的数量应与期望值的%-tags数相同。

返回值 (Return Value)

此函数返回成功匹配和分配的输入项的数量,可以少于提供的数量,或者在早期匹配失败时甚至为零。

例子 (Example)

以下示例显示了fscanf()函数的用法。

#include <stdio.h>
#include <stdlib.h>
int main () {
   char str1[10], str2[10], str3[10];
   int year;
   FILE * fp;
   fp = fopen ("file.txt", "w+");
   fputs("We are in 2012", fp);
   rewind(fp);
   fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
   printf("Read String1 |%s|\n", str1 );
   printf("Read String2 |%s|\n", str2 );
   printf("Read String3 |%s|\n", str3 );
   printf("Read Integer |%d|\n", year );
   fclose(fp);
   return(0);
}

让我们编译并运行上面的程序,它将产生以下结果 -

Read String1 |We|
Read String2 |are|
Read String3 |in|
Read Integer |2012|