C语言把数据写入到txt中的问题

wyhcl 2013-09-12 11:24:55
为什么写到txt文件里的数据不是想要的?而是一堆错的数据?怎么处理?
...全文
661 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyhcl 2013-09-13
  • 打赏
  • 举报
回复
引用 11 楼 max_min_ 的回复:
输入部分代码改成这样

Student st[SIZE];      //重新定义一个与stud结构相同的结构体数组st
printf("请输入要添加学生的姓名:");
scanf("%s",st[0].name);
printf("请输入要添加学生的学号:");
scanf("%d",&st[0].id);
printf("请输入要添加学生的语文成绩:");
scanf("%d",&st[0].yw);
printf("请输入要添加学生的数学成绩:");
scanf("%d",&st[0].sx);
printf("请输入要添加学生的英语成绩:");           //吧新添加的学生记录放在st[0]中
scanf("%d",&st[0].yy);
谢了,问题解决了。图省事了,下面的就复制姓名那一项。。。。。。
max_min_ 2013-09-13
  • 打赏
  • 举报
回复
输入部分代码改成这样

Student st[SIZE];      //重新定义一个与stud结构相同的结构体数组st
printf("请输入要添加学生的姓名:");
scanf("%s",st[0].name);
printf("请输入要添加学生的学号:");
scanf("%d",&st[0].id);
printf("请输入要添加学生的语文成绩:");
scanf("%d",&st[0].yw);
printf("请输入要添加学生的数学成绩:");
scanf("%d",&st[0].sx);
printf("请输入要添加学生的英语成绩:");           //吧新添加的学生记录放在st[0]中
scanf("%d",&st[0].yy);
baichi4141 2013-09-13
  • 打赏
  • 举报
回复
while(fscanf(fp,"%s%d%d%d%d",&stud[i].name,&stud[i].id,&stud[i].yw,&stud[i].sx,&stud[i].yy )!=EOF) name前面那个&去掉
wyhcl 2013-09-13
  • 打赏
  • 举报
回复
引用 7 楼 max_min_ 的回复:
[quote=引用 5 楼 u010659346 的回复:] [quote=引用 4 楼 max_min_ 的回复:] [quote=引用 3 楼 u010659346 的回复:] 代码太长只能贴上来一部分。。。。
1 确定你文件是否正常打开了 2 确定你成功打开的文件写的时候是不是也是以同样的方式来写文件的? [/quote]如果不正常为什么姓名那一栏写进去的是对的,而数字那几栏都是7位的?[/quote] 把你定义的学生类型的结构体贴上来看看![/quote] typedef struct //存放学生数据的结构体// { char name[10]; int id; int yw; int sx; int yy; int sum; }Student;
赵4老师 2013-09-13
  • 打赏
  • 举报
回复
请检查scanf和fscanf的返回值! 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
max_min_ 2013-09-13
  • 打赏
  • 举报
回复
引用 5 楼 u010659346 的回复:
[quote=引用 4 楼 max_min_ 的回复:] [quote=引用 3 楼 u010659346 的回复:] 代码太长只能贴上来一部分。。。。
1 确定你文件是否正常打开了 2 确定你成功打开的文件写的时候是不是也是以同样的方式来写文件的? [/quote]如果不正常为什么姓名那一栏写进去的是对的,而数字那几栏都是7位的?[/quote] 把你定义的学生类型的结构体贴上来看看!
qzf362269994 2013-09-13
  • 打赏
  • 举报
回复
你的各个变量的数据类型是什么啊,为什么写入和写出的格式有差别 像st[0].sx,写入是字符串输入%s,输出到文件却用%d,用int型输出 这怎么会对呢?
wyhcl 2013-09-13
  • 打赏
  • 举报
回复
引用 4 楼 max_min_ 的回复:
[quote=引用 3 楼 u010659346 的回复:] 代码太长只能贴上来一部分。。。。
1 确定你文件是否正常打开了 2 确定你成功打开的文件写的时候是不是也是以同样的方式来写文件的? [/quote]如果不正常为什么姓名那一栏写进去的是对的,而数字那几栏都是7位的?
max_min_ 2013-09-12
  • 打赏
  • 举报
回复
引用 3 楼 u010659346 的回复:
代码太长只能贴上来一部分。。。。
1 确定你文件是否正常打开了 2 确定你成功打开的文件写的时候是不是也是以同样的方式来写文件的?
wyhcl 2013-09-12
  • 打赏
  • 举报
回复
代码太长只能贴上来一部分。。。。
wyhcl 2013-09-12
  • 打赏
  • 举报
回复
引用 1 楼 max_min_ 的回复:
代码有bug 代码贴上来看看!
void Addstudent() { int j; Student st[SIZE]; //重新定义一个与stud结构相同的结构体数组st printf("请输入要添加学生的姓名:"); scanf("%s",&st[0].name); printf("请输入要添加学生的学号:"); scanf("%s",&st[0].id); printf("请输入要添加学生的语文成绩:"); scanf("%s",&st[0].yw); printf("请输入要添加学生的数学成绩:"); scanf("%s",&st[0].sx); printf("请输入要添加学生的英语成绩:"); //吧新添加的学生记录放在st[0]中 scanf("%s",&st[0].yy); FILE *fp; fp=fopen("3.txt","r"); //以读的方式打开3.txt fscanf(fp,"%*[^\n]%*c"); i=0; while(fscanf(fp,"%s%d%d%d%d",&stud[i].name,&stud[i].id,&stud[i].yw,&stud[i].sx,&stud[i].yy )!=EOF) { i++; } //从3.txt中读入数据进结构体数组stud中 fclose(fp); int q=0; int w=0; for(j=1;j<i+1;j++) //将stud数组的数据装入st数组中 { st[j]=stud[q]; q++; } fp=fopen("3.txt","w"); //把st数据重新写入3.txt中 fprintf(fp,"姓名 学号 语文 数学 英语\n"); for(w=0;w<i+1;w++) { fprintf(fp,"%-6s %2d %d %d %d\n",st[w].name,st[w].id,st[w].yw,st[w].sx,st[w].yy ); } fclose(fp); printf("添加成功!\n"): }
max_min_ 2013-09-12
  • 打赏
  • 举报
回复
代码有bug 代码贴上来看看!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧