c语言怎么把txt格式的文件读到结构体里?

例如 把1 a a a a a 1 1 1 1 2 b b b b b 2 2 2 2 3 c c c c c 3 3 3 3 分三次读到一个结构体里
2024-12-01 23:06:35
推荐回答(3个)
回答(1):

1.你得先弄会流文件的读取http://blog.csdn.net/sky101010ws/article/details/6744062 这里是流文件的相关函数
2.读取流文件之后,获取的文件中的字符串信息也就是a a a a a 1 1 1 1 b b b b b 2 2 2 2 2 c c c c c 3 3 3 3。然后判断字符串中的空格和换行符,截取其中的a 1 b 2 c 3等字符(都是char型),接着判断1 2 3的ascii码范围,将其转换为整形(利用函数 int atoi(const char *nptr);)。当然,如果你TXT文件中的字符信息都是固定格式的,那就可以省略1 2 3 整形信息的判断,直接将其转换为整形。
3.获取文件中需要的信息a 1 b 2 c 3的同时,将其输入结构体中就可以了。

回答(2):

1、C语言中对结构体数据格式文件进行读取时,必须以二进制格式打开文件,然后按结构体类型变量内存块方式进行数据读取,相关读数据命令为fread()。
    函数说明:
           #include
           size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
            从stream文件流中,读取nmemb个size大小的数据块到ptr所指的内存buf中,返回读取到的有效数据块数。
2、例如,有如下结构体定义:

    typedef struct TEST 
    { 
        int num;
        double score;
    }STRTEST;
    STRTEST data ;
    FILE *fp = fopen("file.dat", "rb" ) ; //按二进制格式打开文件
    int n=fread( &data, sizeof(STRTEST), 1, fp ); //读取一个数据块到变量data中。

3、注意,当结构体中定义的变量有指针类型时,在存储数据时,就不能按结构体进行存储了。因为,指针变量中存储的是内存地址,而程序在不同环境运行时,所使用的内存地址是不同的,只存储内存地址,不能把真正的数据保存下来,所以,即使是正确读取到文件内容,也不能得到当时的结构体内存数据。因而,在存储结构体数据时,要根据结构体类型变量特点采用正确的方法进行存储,才能正确的读取。

回答(3):

先fopen(""")
再用fscanf()函数