fread函数size_t size,size_t nmemb不能随意设置?

#include<stdlib.h>
#include<stdio.h>
#include<string.h> 


int main()
{
 FILE *pf=NULL;   //文件指针

 int filelen=0;
 int i=0,num=0;
 char *buf;
 pf=fopen("D:/Dev-Cpp/liuzf/LiuTest/db2look.sql","r");   //以只读方式打开文件
 if(pf==NULL)
 {
  return 0;
 }
 else
 {
  //获得文件长度
  fseek(pf,0,SEEK_END);   //文件指针移到末尾
  filelen=ftell(pf);   //获得文件当前指针位置,即为文件长度
  rewind(pf);   //将文件指针移到开头,准备读取

  buf=(char*)malloc(filelen+1+30320);    //新建缓冲区,存储独处的数据
  //将缓冲区的数据设置为0
  //for(i=0;i<filelen+1;i++)
  // buf[i]=0;
  memset( buf, '\0', filelen+1+30320 );
  

  //读取文件
  num=fread(buf,1,filelen+1+30320,pf);
  perror("ffff");
  if(feof(pf))  printf("feof\n");
  printf("ferror=%d\n",ferror(pf));
  
  //关闭文件
  fclose(pf);
  //buf中即为要读出的数据

  printf("%s\n",buf);    //输出一下数据,你可以随便怎么用
  printf("------------%d\n",num);
  /*
  while(*buf  !=  NULL) 
  {
      printf("%d--%c\n",*buf,*buf);
      buf++;
  }
  */                
  
  
  memset( buf, '\0', filelen+1+30320 );
  free(buf);    //最后记得要释放
 }
 system("PAUSE");
 return 1;
}

 

文件内容:

-- No userid was specified, db2look tries to use Environment variable USER


CONNECT TO QHBIDB;


输出内容:

ffff: No error
feof
ferror=0
-- No userid was specified, db2look tries to use Environment variable USER


CONNECT TO QHBIDB;

;


------------97
请按任意键继续. . .


 


环境win7 32位,编译工具vs2008、cfree、devc++,均有此问题,但是把其中的30320替换为3032就可以正常显示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值