在C中写入和读取结构到文件中

时间:2014-08-01 00:00:58

标签: c

我正在尝试将以下结构写入文件并将其读回。我遇到的问题是我不知道如何正确使用fread和fwrite函数!

struct M{
    char album[50];
    char artist;
    char category;
    float price;
    int   stock;
};
struct M s[10];

我尝试了一些我在这里找到的代码,但是文件的输出有奇怪的字符。我猜它不能正常工作。

1 个答案:

答案 0 :(得分:2)

您可能希望artistcategory也是char数组。

struct M{
    char album[50];
    char artist[50];
    char category[50];
    float price;
    int   stock;
};
struct M s[10];

然后你可以用这种方式使用fwrite

fwrite(s, sizeof(s), 1, file);

或等效

fwrite(s, sizeof(M), 10, file);

你可以用同样的方式阅读:

fread(s, sizeof(s), 1, file);

或等效

fread(s, sizeof(M), 10, file);

但你需要在

之前打开文件
FILE * file = fopen("thisFile", "bw"); // binary write mode

FILE * file = fopen("thisFile", "br"); // binary read mode

完成后关闭文件。

fclose(file);

fopen后检查文件是不是== NULL。

但是,您很快就会想要在编译时读取/写入大小未知的文件。 因此,您需要根据文件大小分配动态内存。 但这是另一个问题;)

您可以在那里找到所需的所有信息:http://www.cplusplus.com/reference/cstdio/fopen/