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,
为什么会这样子 出现这种情况 搞不清楚哪里出了 问题
文件存储格式一定要弄清
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);
的区别
你的目标文件明明是ascii文本,怎么用二进制方式存取呢