我有以下代码:
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);
有人可以解释一下为什么这不起作用? AKA为什么它正在读取所有用户,但它没有读取ID。我已经尝试使用int来计算用户数量并仅打印这些用户,但它不能正常工作。 感谢您的帮助,如果需要,我会发布更多代码。
答案 0 :(得分:2)
你的第二个循环
while(fread(&aux, sizeof(aux), 1, f))
将读取id - 移动到文件末尾,因此以下读取将失败。
如果您保存到文件中有多少用户记录要回读并循环播放该号码,您可以使其工作。