fread 读文件问题(csdn)

http://topic.csdn.net/t/20030912/21/2254341.html

fread   返回的是所有被读取的字节数,假如数目不等于请求的字节数,说明有错误发生或者到达文件结束标志(End   of   File)。  
  下面写了个读取完整文件的程序将功补过:  
  /*   fread   读取大文件样例   */  
  #include   <stdio.h>  
  #include   <stdlib.h>  
   
  int   main   (char   argc,   char   **argv)  
  {  
      char   *   fileName;  
      if   (argc   !=   2)  
          {  
                printf   ("Usage:   a.out   filename./n");  
                exit   (1);  
        }  
      else   {   fileName   =   argv[1];}  
   
      FILE   *   pFile;  
      long   lSize;  
      char   *   buffer;  
   
      pFile   =   fopen   (   fileName,   "rb"   );  
      if   (pFile==NULL)  
          {  
                perror   ("Error   opening   file");  
                exit   (1);  
          }  
   
      //   获取文件大小.  
      fseek   (pFile   ,   0   ,   SEEK_END);  
      lSize   =   ftell   (pFile);  
      printf("File   size   =   %d/n",   lSize);  
      rewind   (pFile);  
   
      //   分配内存以包含整个文件  
      buffer   =   (char*)   malloc   (lSize);  
      if   (buffer   ==   NULL)  
          {  
                perror   ("Couldn't   allocate   memory/n");  
                exit   (2);  
          }  
   
   
      //   拷贝文件到缓冲区  
      long   n;  
      n   =   fread   (buffer,1,lSize,pFile);  
      printf("Read   size   =   %ld/n",   n);  
   
      /***   整个文件被加载到缓冲区.   ***/  
      if   (!ferror   (pFile))  
                printf   ("No   errors   while   reading./n");  
   
      else   perror   ("Some   errors   happened./n");  
   
      //   终止并释放缓冲区  
      fclose   (pFile);  
      free   (buffer);  
      return   0;  
  }  
   
  $   ./read_complete_file   hacker.mpg    
  File   size   =   115115008  
  Read   size   =   115115008  
  No   errors   while   reading.  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值