私は次の構造体を持っています:
typedef struct {
char last[NAMESIZE];
char first[NAMESIZE];
} name;
typedef struct {
int id;
name name;
float score;
} record;
typedef struct {
record *data;
size_t nalloc;
size_t nused;
} record_list;
この関数を使用してファイルからレコードを読み取ろうとしています:
int file_read(record_list *list, record* rec)
{
/* irrelevant code eliminated */
while(fread(&records, sizeof(record), 1, fp))
{
*rec = records;
valid_list_insert = list_insert(list, rec);
if(!valid_list_insert)
{
return 0;
}
}
}
そして、この関数を使用してrecord_listをファイルに書き込もうとしています:
int file_write(record_list* list)
{
/* irrelevant code eliminated */
if(fwrite(&list, sizeof(record_list), 1, fp) == 0)
{
return 0;
}
}
ただし、どちらも正しく機能しません。私のプログラムでrecord_listを表示しようとすると、freadはデータをランダムに読み込みます。fwrite はランダムな文字をファイルに書き込むだけです。これが機能しない理由についての助けをいただければ幸いです。