关于c语言文件读取的问题有fread,fwrite,fprintf,fscanf

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();为结构体送入数据,该怎么做呢?还望大神指导!

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

运行结果:


温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-07
fread(&stu[i],sizeof(struct student),1,fp)追问

你运行了吗?运行出来不是想要的结果,stu[i].number的值是一个很大的值,我的是540029745,你再看看

追答

抱歉,昨天没太注意看,如果你要用fread直接读取到结构体里而不用fscanf的话最好改变文件存储的方式,整型不再用字符串存,而是直接存储其16进制

第2个回答  2014-12-07
fread(&stu[1],sizeof(struct student),1,fd);
相似回答