我正在寫一段代碼,其中一部分正在讀取文件中的「記錄」到n長度的數組,n作爲參數給出。文件中的記錄具有恆定的長度(在本例中爲1024),並且只包含數字,空格和小寫字母。每個記錄都以\ n結尾。我用以下結構,以保持一個記錄:使用fread從文件讀取數據結構
typedef struct{
char rec[1024];
} record;
和代碼用於提取其中的N以及在記錄正長數組存儲是這樣寫的:
record * recs=malloc(n*sizeof(record));
size_t read=fread(recs,sizeof(record),(size_t)n,f);
當我檢查輸出這個操作的結果是數組recs的第一個元素包含了所有的記錄,第二個元素除了第一個之外都是這樣,而不是在數組的每個元素處保留一個。我有點失落,因爲我認爲它應該將每條記錄存儲在不同的數組元素中。 至於建議,我也打開陣列的文件和打印元素提供代碼:
if((f=fopen(argv[2],"r"))==NULL){
perror("error opening file\n");
exit(1);
}
for(int i=0;i<(int)read;i++){
printf("record number %d\n %s\n",i,recs[i].rec);
}
請表明寫出記錄的代碼,也是'fopen's該文件的代碼。 – dasblinkenlight
@dasblinkenlight我按照你的建議編輯了我的問題。 –
將''r「'改爲'」rb「'看看是否有幫助。 – dasblinkenlight