【发布时间】:2011-03-24 05:34:43
【问题描述】:
我有一个文件需要读入缓冲区 (char *),但问题是该文件在有效文本之间有一些“有趣的字符”。
所以当我编写如下代码时:
FILE *fp;
if((fp = fopen(".\\test.txt", "rt"))==NULL){
printf("Cannot open file2\n");
}
fseek(fp, 0, SEEK_END);
long int fsize = ftell(fp);
rewind(fp);
//char *buffer2 = malloc(fsize * sizeof(char));
buffer = malloc(fsize * sizeof(char));
fread(buffer, 1, fsize, fp);
buffer[fsize] = '\0';
fclose(fp);
printf("fsize = %i\n", fsize);
printf("Buffer = %s\n", buffer);
它只打印出文本文件的第一部分,如下所示:
缓冲区 = 标题
显然停在第一个 NUL 字符处。
他们有什么方法可以读取文件的整个缓冲区,包括有趣的字符吗?
或者这在 C 中是不可能的?
FSIZE被正确读取,只是FREAD没有读取整个缓冲区;-(
任何帮助将不胜感激;-)
谢谢
林顿
更新:好的,我有点愚蠢.....如果我将缓冲区写入一个包含所有内容的文件,只有当我将它写到屏幕上时它才会停在 null 上,所以很好。
【问题讨论】:
标签: c