В моем буфере, созданном из "fread ()" csv-файла (во всей его полноте), печатаются непонятные дополнительные символы, если файл имеет длину в определенные байты. Я следую стандартному подходу для чтения файла (fseek (), ftell () и fread ()). Эта проблема возникает, когда размер моего файла лежит где-то между 104 и 113 байтами. 1. Почему это происходит в определенном диапазоне? 2.Solution?
Код:
int getfilesize(char *fname)
{
FILE *fp = fopen(fname, "r");
fseek(fp, 0, SEEK_END);
int size = ftell(fp);
fclose(fp);
return size;
}
int main()
{
int file_size=getfilesize("sample1.csv");
printf("\nsize of file:%d",file_size);
char* buf=(malloc(file_size+1));
FILE* fp=fopen("sample1.csv","r");
fread(buf,file_size,1,fp);
fclose(fp);
printf("\nstring is: \n%s\n",buf);
return 0;
}
Файл с ошибками («4» напечатано в следующей строке для этого файла): Sample1.csv (108 байт в моей системе): 0x1001,0,0,0-100 0x1017,5,1,10: -20: -30: 30: 40: -90: -23 0x1011,4,1,5: 10: 20 0x1028,2,0,0-2,1 0x1021,1,1,1: 2: 4: 8
Файл без ошибок: Sample1.csv (120 байт в моей системе): 0x1001,0,0,0-100 0x1017,5,1,10: -20: -30: 30: 40: -90: -23 0x1011,4,1,5: 10: 20 0x1028,2,0,0-2,1 0x1021,1,1,1: 2: 4: 8: 10: 12: 13: 14