c语言fscanf函数 c语言fscanf函数读取出错

c语言fscanf函数问题fprintf(fp,"%s,%c,%d,%f",str,a, c, b);这个输出格式表明 你的文件1.txt 里的数据 是用 逗号 分 隔 。
if((fp = fopen("1.txt","r"))==NULL)你要打开 读 这个 用 逗号为 分隔符 的文件 。
fscanf(fp,"%s,%c,%d,%f", str, a, c, b);
漏写 str, 给你补上 , 但 这仍不能解决 %s, 的逗号分隔问题 。
必须 用下面格式读取逗号分隔的数据:
fscanf(fp,"%[^,],%c,%d,%f", str, a, c, b);
======================================
假如文件里的数据 用 空白 分隔,不用 逗号,日子就好过得多:
fprintf(fp,"%s %c %d %f",str,a, c, b);
fscanf(fp,"%s %c %d %f", str, a, c, b);
请问C语言fscanf的用法?功 能: 从一个流中执行格式化输入\x0d\x0a用 法: int fscanf(FILE *stream, char *format,[argument...]);\x0d\x0aint fscanf(文件指针c语言fscanf函数,格式字符串 , 输入列表);\x0d\x0a返回值c语言fscanf函数:整型,数值等于[argument...]的个数\x0d\x0a程序例:\x0d\x0a#include \x0d\x0a#include \x0d\x0aint main(void)\x0d\x0a{\x0d\x0aint i;\x0d\x0aprintf("Input an integer: ");\x0d\x0aif (fscanf(stdin, "%d", i))\x0d\x0aprintf("The integer read was: %d\n",\x0d\x0ai);\x0d\x0aelse\x0d\x0a{\x0d\x0afprintf(stderr, "Error reading an \\x0d\x0ainteger from stdin.\n");\x0d\x0aexit(1);\x0d\x0a}\x0d\x0areturn 0;\x0d\x0a}\x0d\x0a返回EOF如果读取到文件结尾 。
c语言:fscanf(fp,"%*[^\n]")为什么可以跳过全部字符直到下一个换行符%*[^\n]这个通配符的意思,就是跳过所有字符,直到换行符为止 。
scanf是格式输入函数,功能是在屏幕上输入指定的信息 。简单的来说和printf相似却不相同 。
scanf调用格式: scanf("格式化字符串" , 地址表);
如:
#include stdio.h
int main()
{
int a,b,c;
printf(“input three data:\n”);//使用 scanf 之前先用 printf 提示输入 。
scanf("%d%d%d",a,b,c); // scanf 的“输入参数”中,前面的取地址符记住
printf("%d,%d,%d/n",a,b,c);
【c语言fscanf函数 c语言fscanf函数读取出错】return 0;
}
扩展资料:
C语言通配符:
%a,%A:读入一个浮点值(仅C99有效)
%c:读入一个字符
%d:读入十进制整数
%i:读入十进制,八进制,十六进制整数
%o:读入八进制整数
%x,%X:读入十六进制整数
%s:读入一个字符串,遇空格、制表符或换行符结束 。
%f,%F,%e,%E,%g,%G:用来输入实数,可以用小数形式或指数形式输入 。
%p:读入一个指针
%u:读入一个无符号十进制整数
%n:至此已读入值的等价字符数
%[]:扫描字符集合
%%:读%符号
C语言文件读取fscanf(),该怎么处理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;
}//这样会有意外输出
C语言关于fscanf函数fprintf(fp,"%s,%c,%d,%f",str,a,
c,
b);
这个输出格式表明
你的文件1.txt
里的数据
是用
逗号

隔 。
if((fp
=
fopen("1.txt","r"))==NULL)
你要打开

这个

逗号为
分隔符
的文件 。
fscanf(fp,"%s,%c,%d,%f",
str,
a,
c,
b);
漏写
str,
给你补上,但
这仍不能解决
%s,
的逗号分隔问题 。
必须
用下面格式读取逗号分隔的数据:
fscanf(fp,"%[^,],%c,%d,%f",
str,
a,
c,
b);
======================================
假如文件里的数据

空白
分隔,不用
逗号,日子就好过得多:
fprintf(fp,"%s
%c
%d
%f",str,a,
c,
b);
fscanf(fp,"%s
%c
%d
%f",
str,
a,
c,
b);
C语言中fscanf函数使用后位置指针会往下移动么?在读取数据成功时会移动 。
C语言中c语言fscanf函数,对文件指针会产生移动作用c语言fscanf函数的函数包括:
1 读函数: fread, fgetc, fgets, fscanf等 。执行读操作时c语言fscanf函数,指针向后移动,移动距离为实际读到的字节数 。
2 写函数:fwrite, fputc, fputs,fprintf等 。执行写操作时,指针向后移动,移动距离为实际写入的字节数 。
3 指针移动函数:fseek, rewind等 。按照函数功能,自由移动文件指针 。
fscanf在读取数据成功时,即返回值0时 , 会移动文件指针 。如返回值=0,代表读操作失败,不会产生指针移动 。
关于c语言fscanf函数和c语言fscanf函数读取出错的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读