私は次のコードを持っている:Cでバイナリファイルから2つの異なるデータ型を読み取るにはどうすればよいですか?
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を持つことを試みましたが、うまくいきませんでした。 助けていただきありがとうございます。必要に応じてさらにコードを投稿します。ファイルの末尾に移動するので、次の読み取りに失敗します - あなたの第二のループ
while(fread(&aux, sizeof(aux), 1, f))
何が問題なのですか?ファイルには何が書き込まれますか? –
これは実際のコードですか?読み込みのために1つのファイル 'f'を開いています。あなたはそれを書きます。読書と再開の間に閉じますか?あなたは – doctorlove
まあそもそも書き込み用にオープンを確認してください、私はすべての50人のユーザーを読み取るために管理するが、int型のIDの読み取りは(読んでいない)0を返します。 IDの一部を読み、ファイルの末尾に到達... –