c语言读不出文本文件怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/05/15 11:56:58
01 张成成 男 501 87732111
02 李成华 女 101 87723112
03 王成凤 女 101 87723112
04 张明明 男 502 87734333
05 陈东 男 501 87732111
06 李果 男 502 87734333
07 张园园 女 102 87756122
上面是文本文件A.txt
下面的程序错在哪里哈?麻烦高手们
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student
{
char num;
char name[7];
char sex;
int room_num;
int te_num;
}stud[7];

void main()
{
FILE *fp;
int i,j,n,flag;
char name[7];
if ((fp=fopen("A.txt","a"))==NULL)
{
printf("can not open file.\n");
exit(0);
}
printf("\noriginal data:\n");
for (i=0;i<7;i++)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\n%-6s%8s",stud[i].num,stud[i].name);
}
fcl

01 张成成 男 501 87732111
struct student
{
char num;
char name[7];
char sex;
int room_num;
int te_num;
}stud[7];

你那文本文件不是用fwrite()结构体写入的,所以你用fread()是读不到的。象char sex;只是一个字节而“男”却要两字节.int te_num; 最大为32767
而你的号码87756122 超出了INT 范围。
最好还是用fgets()读入一行,然后对读入的字串处理赋值给相应变量