В файле "test" три символа - "abc". Определяется размер файла, он используется в качестве размера для динамически распределяемого массива. Соответственно, при выделении памяти malloc-ом, расчитываю выделить 3 байта и загрузить данные в массив. Вместо этого (IDE MS VS 7.0) получаю указатель str на строку вида "НННээээ««««««««ю" = 16 Byte. Поправьте меня, пожалуйста.
| Код | #include <stdio.h> #include <io.h>
inline long getfsize(FILE *fp) { return filelength(fileno(fp)); }
int main(void) { FILE *fp; char *str; long bufsize;
if((fp=fopen("test", "r" ))==NULL) { printf("The file was not opened\n"); exit(1); } bufsize = getfsize(fp); str = (char *)malloc(bufsize);
if(fread(str, sizeof(char), bufsize, fp) != bufsize) { if(feof(fp)) { cout << "EOF was untimely found\n"; } else { cout << "Error ocurred during file read!\n"; } }
free(str); fclose(fp);
return 0; }
|
|