linux - 执行fread函数出现问题
伊谢尔伦
伊谢尔伦 2017-06-07 09:24:30
0
2
1160

执行fread函数成功后,返回的值是等于data_len。但是执行strlen后,字符串buff的长度不对。但是我用fwrite将图片写到另一个.jpg是OK的

int main() { FILE *fp,*out; int c,len; out=fopen("out.jpg","wb"); if((fp=fopen("/home/jens/Desktop/picture.jpg","rb"))<0){ printf("error open\n"); } if(fp == NULL) printf("Open file Error!"); fseek(fp,0,SEEK_END); int data_len=ftell(fp); printf("datalen %d",data_len); rewind(fp); char* buff=(char *)malloc((data_len)*sizeof(char)+1); size_t a=fread(buff,sizeof(char),data_len,fp); printf( "\n a %d",a); //a的值是图片的大小 len=strlen(buff); printf("\n len %d",len);//在这里buff的大小却只是4。 char* HTTP_INFO=(char *)malloc((data_len)*sizeof(char)+1024); char *buf="abcdefg"; printf("\n %d",strlen(buf)); len=sprintf(HTTP_INFO,"%s",buf);//如果把这个换成buff,结果也还是4。 printf("\nlen %d",len); fclose(fp); fclose(out); return 0; }

运行的结果如下图

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复 (2)
滿天的星座

strlen的作用是遍历一个char*,如果找到0x00(所谓结束符'

    伊谢尔伦

    C语言吧

      最新下载
      更多>
      网站特效
      网站源码
      网站素材
      前端模板
      关于我们 免责声明 Sitemap
      PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!