在下面的程序中,如果我给出长尺寸= 1000的结果即将到来,但如果我通过size=ftell(fp);
取值,则表示没有显示任何结果..
#include <stdio.h>
main() {
FILE *fp;
long size;
char *buff;
fp = fopen("/home/tuhin/Desktop/abc.txt", "rb");
fseek(fp,0l,SEEK_END);
size=ftell(fp);
printf("%ld",size);
buff=calloc(1,size+1);
fread(buff,size,1,fp);
printf("%s",buff);
fclose(fp);
free(buff);
}
答案 0 :(得分:1)
如果你把SEEK_END文件定位到它的末尾,并且没有其他人正在编写/附加它,那么fread()会在最后读取一些内容,并且(当然)除了端。
答案 1 :(得分:0)
这不是 ftell 的问题。你没有得到buff的结果。 为了使用 fseek 并阅读该文件。
以下是代码:
#include <stdio.h>
main() {
FILE *fp;
long size;
char *buff;
fp = fopen("abc.c", "rb");
fseek(fp,0,SEEK_END);
printf("fp:%d\n",fp);
size=ftell(fp);
printf("size:%ld\n",size);
buff=calloc(1,size+1);
fseek(fp,SEEK_SET,0);
fread(buff,size+1,1,fp);
printf("buff:%s",buff);
fclose(fp);
free(buff);
}