用C语言将结构写入并读取到文件中

用C语言将结构写入并读取到文件中,c,C,我正试图将以下结构写入一个文件并将其读回。我遇到的问题是我不知道如何正确使用fread和fwrite函数 struct M{ char album[50]; char artist; char category; float price; int stock; }; struct M s[10]; 我尝试了一些我在这里找到的代码,但是文件的输出有奇怪的字符。我猜它工作不正常。您可能希望artist和category也成为字符数组 struct M{

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

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

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

您可能希望
artist
category
也成为字符数组

struct M{
    char album[50];
    char artist[50];
    char category[50];
    float price;
    int   stock;
};
struct M s[10];
然后你可以用这种方式写

fwrite(s, sizeof(s), 1, file);
或同等地

fwrite(s, sizeof(M), 10, file);
fread(s, sizeof(M), 10, file);
您可以用同样的方式阅读:

fread(s, sizeof(s), 1, file);
或同等地

fwrite(s, sizeof(M), 10, file);
fread(s, sizeof(M), 10, file);
但是您需要在开始之前打开该文件

FILE * file = fopen("thisFile", "bw"); // binary write mode

完成后关闭文件

fclose(file);
并检查fopen之后的文件是否不==NULL

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


你需要的所有信息都可以在那里找到:

投票-1因为缺乏研究工作。关于将这些函数用于单个数据段和使用它们序列化类似结构的教程不胜枚举。重复的问题意味着您的问题与该问题非常相似,因此提供的解决方案是相同的。这与问这个问题的人无关。@user3121023是的。文件末尾还有一个要输出的“a”。