代码
huiyuan
调试结果
num是数组,%ld只能读取1个long类型,scanf中直接用数组接收数据肯定出错啊
把结构体中的
long num[20]改成 long num;
int score[20]改成 int score;
int tele[20]改成 long tele;
scanf中的\t改成空格,最后一个%d改成 %ld(对应tele这个变量的)
或者,直接用char数组来接收num和tele数据就可以了,下面的代码是用char数组来读取数据的。
#include <stdio.h>
#include <stdlib.h>
typedef struct member
{
char num[20];
char name[20];
char sex[20];
int score;
char tele[20];
};
struct member mem[20];
int main()
{
int i,j;
FILE* fp;
if ((fp=fopen("huiyuan.txt","r"))==NULL)
{
printf("wrong");
exit(0);
}
i=0;
while (!feof(fp)) //文件中并不一定够20组数据,所以最好不要用for循环取读取
{
fscanf(fp,"%s %s %s %d %s\n",mem[i].num,mem[i].name,mem[i].sex,&mem[i].score,mem[i].tele);
fprintf(stdout,"%s %s %s %d %s\n",mem[i].num,mem[i].name,mem[i].sex,mem[i].score,mem[i].tele);
i++; //i是读取的数据条数
}
fclose(fp);
return 0;
}