#include <stdio.h>
#include <stdlib.h>
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}Y[2];
void read()
{
int i;
FILE *fp;
fp=fopen("test.txt","rt");
for(i=0;i<5;i++)
{
fread(&Y[i],sizeof(struct yuan),1,fp);
printf("%s %d %d \n",Y[i].name,&Y[i].age,&Y[i].pay);
}
fclose(fp);
}
void main(int argc,char **argn)
{
int n;
read();
}
编译时打印结果如下图
txt文件如下
sucre 26 1000
philps 28 1800
lindey 32 1500
mike 22 1800
john 45 5000
12 个解决方案
#1
#include <stdio.h>
#include <stdlib.h>
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}Y[5]; // 用到了5个你只定义了 2个
void read()
{
int i;
FILE *fp;
fp=fopen("test.txt","rt");
for(i=0;i<5;i++)
{
fread(&Y[i],sizeof(struct yuan),1,fp);
printf("%s %d %d \n",Y[i].name,&Y[i].age,&Y[i].pay);
}
fclose(fp);
}
void main(int argc,char **argn)
{
int n;
read();
}
#2
Y[i],你这个i取值为 0~4,而你的Y[2]只有两个
#3
那是那阵调试没改过来,5个也还是打印结果不对
#4
这个不是主要原因,还是打印出来别的内存中的数据
#5
这是我调试的时候看只有前两组能正确打印,就改成Y[2]只打印前两个,但是后面还是那些别的数据,就是不打印文件中后三组了
#6
坑爹啊,结构体定义自己看有木有。。。。
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}
fread(&Y[i],sizeof(struct yuan),1,fp);
sizeof(struct yuan)
不出错才怪啊有木有。。。。
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}
fread(&Y[i],sizeof(struct yuan),1,fp);
sizeof(struct yuan)
不出错才怪啊有木有。。。。
#7
唉。。。。。。。
#8
meiyou sisi
#9
#include <stdio.h>
#include <stdlib.h>
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}Y[5];
void read()
{
int i = 0;
FILE *fp;
fp=fopen("d:\\test.txt","rt");
while (!feof(fp))
{
fscanf(fp, "%s%d%d", Y[i].name,&Y[i].age,&Y[i].pay);
printf("%s %d %d \n",Y[i].name,Y[i].age,Y[i].pay);
i++;
}
fclose(fp);
}
void main(int argc,char **argn)
{
int n;
read();
}
#10
自己改下路径就ok了
#11
正解,++
同时struct yuan *next;这个属于多余的,可以去掉的
#12
你读的时候fread把‘\n’也读了呢
而且你读的单元是sizeof(struct)到了next指针都位置,就错了呀
而且你读的单元是sizeof(struct)到了next指针都位置,就错了呀
#1
#include <stdio.h>
#include <stdlib.h>
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}Y[5]; // 用到了5个你只定义了 2个
void read()
{
int i;
FILE *fp;
fp=fopen("test.txt","rt");
for(i=0;i<5;i++)
{
fread(&Y[i],sizeof(struct yuan),1,fp);
printf("%s %d %d \n",Y[i].name,&Y[i].age,&Y[i].pay);
}
fclose(fp);
}
void main(int argc,char **argn)
{
int n;
read();
}
#2
Y[i],你这个i取值为 0~4,而你的Y[2]只有两个
#3
那是那阵调试没改过来,5个也还是打印结果不对
#4
这个不是主要原因,还是打印出来别的内存中的数据
#5
这是我调试的时候看只有前两组能正确打印,就改成Y[2]只打印前两个,但是后面还是那些别的数据,就是不打印文件中后三组了
#6
坑爹啊,结构体定义自己看有木有。。。。
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}
fread(&Y[i],sizeof(struct yuan),1,fp);
sizeof(struct yuan)
不出错才怪啊有木有。。。。
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}
fread(&Y[i],sizeof(struct yuan),1,fp);
sizeof(struct yuan)
不出错才怪啊有木有。。。。
#7
唉。。。。。。。
#8
meiyou sisi
#9
#include <stdio.h>
#include <stdlib.h>
struct yuan
{
char name[20];
int age;
int pay;
struct yuan *next;
}Y[5];
void read()
{
int i = 0;
FILE *fp;
fp=fopen("d:\\test.txt","rt");
while (!feof(fp))
{
fscanf(fp, "%s%d%d", Y[i].name,&Y[i].age,&Y[i].pay);
printf("%s %d %d \n",Y[i].name,Y[i].age,Y[i].pay);
i++;
}
fclose(fp);
}
void main(int argc,char **argn)
{
int n;
read();
}
#10
自己改下路径就ok了
#11
正解,++
同时struct yuan *next;这个属于多余的,可以去掉的
#12
你读的时候fread把‘\n’也读了呢
而且你读的单元是sizeof(struct)到了next指针都位置,就错了呀
而且你读的单元是sizeof(struct)到了next指针都位置,就错了呀