c语言fscanf函数问题

#include<stdio.h>
main()
{
char str[10];
char a;
float b;
int c;
FILE *fp;

printf("请输入实验信息\n");
scanf("%s%c%d%f",str,&a, &c, &b);
if((fp = fopen("1.txt","w"))==NULL)
{
printf("文件打开错误\n");
}
else
{
fprintf(fp,"%s,%c,%d,%f",str,a, c, b);
}
fclose(fp);
if((fp = fopen("1.txt","r"))==NULL)
{
printf("文件打开错误\n");
}
else
{
fscanf(fp,"%s,%c,%d,%f",&a, &c, &b);
printf("%s,%c,%d,%f",str,a, c, b);
}
fclose(fp);
}

正如你看到的输入的是 asdfg a 12 1.8
可是再读回来就乱码了
我做过很多次试验
应该是跟那个字符串有关谁能帮我解答一下
顺便说说fcanf 到底是怎样工作的

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);追问

今天算受教育了十分感谢 可惜我没分啊 十分抱歉您两点半还回答问题
祝你身体健康 不要熬夜吧

追答

不必客气。我在渥太华。与东8区有13小时时差。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-03
fscanf(fp,"%s,%c,%d,%f",&a, &c, &b);明显少个参数啊
相似回答