读取文件时结果不打印

时间:2017-04-26 11:59:04

标签: c

在下面的程序中,如果我给出长尺寸= 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);

}

2 个答案:

答案 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);

}