我被分配管理一家音乐商店。在数据库(保存为 .dat 文件)中,我们有一个艺术家姓名和专辑。
我在写入和读取文件时遇到问题。第一件事是,即使我不写任何东西,只需创建文件,然后在记事本中打开文件,我就会看到乱码和中文或日文字母。即使我写到失败,或者使用 Visual Studio 从它读取,这似乎并没有改变。这是我的代码:
我打开文件:
p=fopen("database.dat","w+");
添加项目功能:
void add_item(char* artist,char* record,FILE* p) //adds an item with artist and record to store
{
item node;
int item_size=sizeof(item);
rewind(p);
strcpy(node.artist,artist);
strcpy(node.record,record);
fwrite(&node,item_size,1,p);
printf("Data added\n");
}
item 是用于在商店中定义单个项目的结构。它有 2 个字段,字符串艺术家和字符串记录。
typedef struct item
{
char artist[100],record[100];
}item;
这是为了阅读:
void print_file(FILE* p) //print the entire file
{
int size=sizeof(item);
item node;
rewind(p);
while(!feof(p))
{
fread(&node,size,1,p);
printf("%s - %s\n",node.artist,node.record);
}
}
如果我使用 print_file,我会看到乱码,如果我真的用记事本打开文件,我会看到日语。
帮助!:D
编辑:刚刚发现了一些东西。如果我添加一个项目,然后读取文件,我将读取该项目。但是,如果我再次运行该程序并尝试立即读取文件,我会看到乱码。