如何从 C 中的二进制文件中读取两种不同的数据类型?
How can I read two different data types from binary file in C?
我有以下代码:
typedef struct{
int user_id;
char username[100];
char password[25];
} User;
int id = 10001;
User array[50];
...
然后是失败的重要部分(写入和读取):
FILE *f = fopen("users.dat", "w");
User aux;
int j = 0;
for(int i = 0; i < 50; i++){
fwrite(&array[i],sizeof(array[i]),1 , f);
}
fwrite(&id, sizeof(id), 1, f);
fclose(f);
f = fopen("users.dat,"r");
while(fread(&aux, sizeof(aux), 1, f)){
array[j++] = aux;
}
fread(&id, sizeof(id),1 ,f);
有人可以向我解释为什么这不起作用吗?也就是为什么它正在读取所有用户但不读取 id。我试过用一个 int 来计算用户数量并只打印这些,但效果不佳。
感谢您的帮助,如果需要,我会 post 更多代码。
你的第二个循环
while(fread(&aux, sizeof(aux), 1, f))
将读取 id - 移动到文件末尾,因此以下读取将失败。
如果您将要回读的用户记录数保存到文件中并循环获取该数字,您就可以使用它。
我有以下代码:
typedef struct{
int user_id;
char username[100];
char password[25];
} User;
int id = 10001;
User array[50];
...
然后是失败的重要部分(写入和读取):
FILE *f = fopen("users.dat", "w");
User aux;
int j = 0;
for(int i = 0; i < 50; i++){
fwrite(&array[i],sizeof(array[i]),1 , f);
}
fwrite(&id, sizeof(id), 1, f);
fclose(f);
f = fopen("users.dat,"r");
while(fread(&aux, sizeof(aux), 1, f)){
array[j++] = aux;
}
fread(&id, sizeof(id),1 ,f);
有人可以向我解释为什么这不起作用吗?也就是为什么它正在读取所有用户但不读取 id。我试过用一个 int 来计算用户数量并只打印这些,但效果不佳。 感谢您的帮助,如果需要,我会 post 更多代码。
你的第二个循环
while(fread(&aux, sizeof(aux), 1, f))
将读取 id - 移动到文件末尾,因此以下读取将失败。
如果您将要回读的用户记录数保存到文件中并循环获取该数字,您就可以使用它。