私はコードを書いており、その一部はファイルからn長配列への "レコード"を引数として渡しています。ファイル内のレコードは一定の長さ(この場合は1024)を持ち、数値、スペース、下位文字のみを含みます。各レコードは\ nで終了します。私は1つのレコード保つために、次の構造を使用しています:私は出力をチェックするとフリーダを使ってファイルから構造体へのデータの読み込み
record * recs=malloc(n*sizeof(record));
size_t read=fread(recs,sizeof(record),(size_t)n,f);
:それらのn個を抽出して、レコードの長さnの配列に格納するため
typedef struct{
char rec[1024];
} record;
とコードをこのように書かれていますこの操作の中で、配列recsの最初の要素には配列の各要素を1つずつ保持するのではなく、すべてのレコードが含まれていることが分かります。私は配列の別の要素に各レコードを格納する必要があると思ったので、一種の失われています。 示唆したように、私はまた、配列のファイルと印刷の要素を開くためのコードを提供しています:
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