关于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();为结构体送入数据,该怎么做呢?还望大神指导!
展开
 我来答
451006071
2014-12-07 · TA获得超过1332个赞
知道小有建树答主
回答量:368
采纳率:57%
帮助的人:329万
展开全部

我做了一次,没有发现你所说的问题。首先我很好奇为什么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;
}

运行结果:


百度网友38e7e4d
2014-12-07 · TA获得超过296个赞
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:182万
展开全部
fread(&stu[i],sizeof(struct student),1,fp)
追问
你运行了吗?运行出来不是想要的结果,stu[i].number的值是一个很大的值,我的是540029745,你再看看
追答
抱歉,昨天没太注意看,如果你要用fread直接读取到结构体里而不用fscanf的话最好改变文件存储的方式,整型不再用字符串存,而是直接存储其16进制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7702e7d
2014-12-07 · 超过22用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:36.9万
展开全部
fread(&stu[1],sizeof(struct student),1,fd);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式