我正在写一段代码,其中一部分正在读取文件中的“记录”到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