Manutd_Potter 2015-07-31 14:20 采纳率: 40%
浏览 1634
已采纳

c语言 书中的例子 可是出了问题 关于数据存储 小白一名 谢谢帮忙 求助

目标文件内容:
A 1001 19 class
B 1001 19 class
C 1001 19 class
D 1001 19 class
E 1001 19 class
F 1001 19 class
G 1001 19 class
H 1001 19 class
I 1001 19 class
J 1001 19 class

代码:
#include
#include
#include
#define SIZE 10
struct Stu {
char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
int main()
{
FILE *p;
errno_t err;
err = fopen_s(&p, "D:\out.dat", "rb");
if (err != 0)
{
printf("Can't find this file\n");
exit(0);
}
else
{
for (int i = 0; i < SIZE; i = i + 2)
{
fseek(p, i*sizeof(Stu), 0);
fread(&stud[i], sizeof(Stu), 1, p);
printf("%s,%d,%d,%s", stud[i].name, stud[i].num, stud[i].age, stud[i].addr);
}
fclose(p);
}
}

Microsoft Windows 版本 10.0.10240 2015 Microsoft Corporation. All rights reserved.

C:\Users\Administrator>d:

D:>vc++\cp_91\Debug\cp_91.exe
A 1001 19 class
B 1001 19 class
C ,225669985,824197642,001 19 class
C 01 19 class
F 1001 19 class
G 1001,824198666,540094512,19 class
G 10019 class
J 1001 19 class
,540094512,1663056177,lass
,0,0,,0,0,

为什么会这样子 出现这种情况 搞不清楚哪里出了 问题

  • 写回答

2条回答 默认 最新

  • poemdreamer 2015-07-31 14:44
    关注

    文件存储格式一定要弄清

    for (int i = 0; i < SIZE;++i)
    {
    fscanf(p, "%s %d %d %s" , , stud[i].name, stud[i].num, stud[i].age, stud[i].addr);
    }

    fwrite(&stud[i], sizeof(Stu), 1, p);
    和 fprintf(p,"%s %d %d %s\r\n" , , stud[i].name, stud[i].num, stud[i].age, stud[i].addr) ;
    的区别

    fread(&stud[i], sizeof(Stu), 1, p);

    fscanf(p, "%s %d %d %s" , , stud[i].name, stud[i].num, stud[i].age, stud[i].addr);
    的区别

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统