C语言fscanf的用法是什么

C语言fscanf的用法是什么,第1张

功 能: 从一个流中执行格式化输入\x0d\x0a 用 法: int fscanf(FILE *stream, char *format,[argument...])\x0d\x0a int fscanf(文件指针,格式字符串,输入列表)\x0d\x0a 返回值:整型,数值等于[argument...]的个数\x0d\x0a 程序例:\x0d\x0a #include \x0d\x0a #include \x0d\x0a int main(void)\x0d\x0a {\x0d\x0a int i\x0d\x0a printf("Input an integer: ")\x0d\x0a if (fscanf(stdin, "%d", &i))\x0d\x0a printf("The integer read was: %d\n",\x0d\x0a i)\x0d\x0a else\x0d\x0a {\x0d\x0a fprintf(stderr, "Error reading an \\x0d\x0a integer from stdin.\n")\x0d\x0a exit(1)\x0d\x0a }\x0d\x0a return 0\x0d\x0a }\x0d\x0a 返回EOF如果读取到文件结尾。

功 能: 从一个流中执行格式化输入\x0d\x0a 用 法: int fscanf(FILE *stream, char *format,[argument...])\x0d\x0a int fscanf(文件指针,格式字符串,输入列表)\x0d\x0a 返回值:整型,数值等于[argument...]的个数\x0d\x0a 程序例:\x0d\x0a #include \x0d\x0a #include \x0d\x0a int main(void)\x0d\x0a {\x0d\x0a int i\x0d\x0a printf("Input an integer: ")\x0d\x0a if (fscanf(stdin, "%d", &i))\x0d\x0a printf("The integer read was: %d\n",\x0d\x0a i)\x0d\x0a else\x0d\x0a {\x0d\x0a fprintf(stderr, "Error reading an \\x0d\x0a integer from stdin.\n")\x0d\x0a exit(1)\x0d\x0a }\x0d\x0a return 0\x0d\x0a }\x0d\x0a 返回EOF如果读取到文件结尾。

fscanf位于头文件<stdio.h>中,函数原型为int fscanf(FILE*stream, constchar*format, [argument...])其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。

函数名: fscanf

功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。

返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。

用法:

1 int fscanf(FILE*stream,constchar*format,[argument...])

FILE *stream:文件指针

char *format:格式字符串

[argument...]:输入列表

格式字符说明

常用基本参数对照:

%d:读入一个十进制整数.

%i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.

%u:读入一个无符号十进制整数.

%f %F %g %G : 用来输入实数,可以用小数形式或指数形式输入.

%x %X: 读入十六进制整数.

%o': 读入八进制整数.

%s : 读入一个字符串,遇空字符‘\0'结束。

%c : 读入一个字符。无法读入空值。空格可以被读入。

附加格式说明字符表修饰符说明

L/l 长度修饰符 输入"长"数据

h 长度修饰符 输入"短"数据

示例说明

如果要求从标准输入中输入一串字符串和一个整型数,那么参数“%s%d”表示什么呢?默认情况下,在终端上(这里假设程序为控制台应用程序)输入第一个参数的值的时候敲下回车,则在第二行输入的为第二个参数值,采用这种输入方法那么格式字符的形式就无关紧要了。[1]

这里要特殊说明的是如果参数在同一行给出,那么格式字符的参数与终端的输入会有什么关系。举个例子:如果格式字符为“%s+%d”,那么参数的输入就应该为 string + integer。

程序例

例一

#include <stdlib.h>

#include <stdio.h>

int main(void)

{

int i

printf("Input an integer:")

/*从标准输入中读取一个整数*/

if(fscanf(stdin, "%d",&i))

printf("The integer read was:%d\n", i)

else

{

fprintf(stderr, "Error reading an integer from stdin.\n")

exit(1)

}

return 0

}

返回EOF如果读取到文件结尾。

例二

附:MSDN中例子

#include <stdio.h>

FILE *stream

int main(void)

{

long l

float fp

char s[81]

char c

stream = fopen("fscanf.out", "w+")

if(stream==NULL)

printf("The file fscanf.out was not opened\n")

else

{

fprintf(stream,"%s%ld%f%c","a-string", 65000,3.14159, 'x')

/*将指针设置至文件开头*/

fseek(stream,0L,SEEK_SET)

/*从文件中读取数据*/

fscanf(stream,"%s",s)

fscanf(stream,"%ld",&l)

fscanf(stream,"%f",&fp)

fscanf(stream,"%c",&c)

/*输出读取的数据*/

printf("%s\n",s)

printf("%ld\n",l)

printf("%f\n",fp)

printf("%c\n",c)

fclose(stream)

}

return 0

}//这样会有意外输出


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7958886.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存