我正在尝试将以下结构写入文件并将其读回。我遇到的问题是我不知道如何正确使用fread和fwrite函数!
struct M{
char album[50];
char artist;
char category;
float price;
int stock;
};
struct M s[10];
我尝试了一些我在这里找到的代码,但是文件的输出有奇怪的字符。我猜它不能正常工作。
答案 0 :(得分:2)
您可能希望artist
和category
也是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/