关于c语言文件读取的问题有fread,fwrite,fprintf,fscanf
vc6.0运行调试:我在记事本来面存了结构体数据,typedefstructstudent{intnumber;charname[10];}stu[2];FILE*fp;...
vc6.0运行调试:
我在记事本来面存了结构体数据,
typedef struct student{
int number;
char name[10];
}stu[2];
FILE *fp;
下面我用fscanf(fp,"%d%s",&stu[1].number,stu[2].name);
可以给到结构体里面数据,但是我想用fread();为结构体送入数据,该怎么做呢?还望大神指导! 展开
我在记事本来面存了结构体数据,
typedef struct student{
int number;
char name[10];
}stu[2];
FILE *fp;
下面我用fscanf(fp,"%d%s",&stu[1].number,stu[2].name);
可以给到结构体里面数据,但是我想用fread();为结构体送入数据,该怎么做呢?还望大神指导! 展开
展开全部
我做了一次,没有发现你所说的问题。首先我很好奇为什么struct前面有个typedef?你定义的是类型还是变量?其次,在fscanf中可以使用stu[2]?在C语言中下标是从0开始的,我用的是GCC编译器没遇到你的问题,要不你把我上传的文件的源码编译看看是不是有同样问题?我表示没这个问题。有问题欢迎提问.
#include <stdio.h>
#include <stdlib.h>
struct student
{
int number;
char name[10];
}stu[2];
int main(void)
{
FILE *fp = NULL;
fp = fopen("data.txt","r");
if(NULL == fp)
{
system("echo not this file");
return 0;
}
fscanf(fp,"%d%s",&stu[0].number,&stu[1].name);
printf("num:%d\n",stu[0].number);
printf("name:%s\n",stu[1].name);
system("pause");
return 0;
}
运行结果:
展开全部
fread(&stu[i],sizeof(struct student),1,fp)
追问
你运行了吗?运行出来不是想要的结果,stu[i].number的值是一个很大的值,我的是540029745,你再看看
追答
抱歉,昨天没太注意看,如果你要用fread直接读取到结构体里而不用fscanf的话最好改变文件存储的方式,整型不再用字符串存,而是直接存储其16进制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fread(&stu[1],sizeof(struct student),1,fd);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询