博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINUX C获取图片数据失败原因
阅读量:6302 次
发布时间:2019-06-22

本文共 830 字,大约阅读时间需要 2 分钟。

char buffer[1024]={0};

char p = malloc(1024300);
char *q = p;
printf("---p: %p, q: %p--- \n", p, q); //打印查看p ,q地址
unsigned int recvsize = 0;
while(1)
{
int ret = read(sockfd, buffer, 1024); //获取服务器的信息
if(ret <= 0) break;
memcpy(q, buffer, ret); //拷贝数据
q+=ret; //地址偏移
recvsize+= ret; //总字节
memset(buffer, 0, sizeof(buffer)); //清空内存,为下次写入准备
}
printf("ED---p: %p, q: %p--- \n", p, q); //打印地址信息

q = strstr(p, "r\n\r\n")+4;    //ERROR /* q = strstr(p, "\r\n\r\n")+4;   // TRUE  偏移指针 获取"\r\n\r\n"后面的图片有效数据*/

printf("RED---p: %p, q: %p--- \n", p, q);

printf("recvsize:%d\n", recvsize);
FILE*file = fopen(pic, "w+");
fwrite(q, recvsize-(q-p), 1, file);
fclose(file);
free(p);

运行结果:

LINUX C获取图片数据失败原因

原因分析:

请求格式是以"\r\n\r\n"结束,而 q = strstr(p, "r\n\r\n")+4; 少了个'\', 因此strstr返回NULL, 因此,q的地址为0x4;所以一直无法为后面的操作提供有效的图片数据

转载于:https://blog.51cto.com/13502993/2045781

你可能感兴趣的文章
因为你是前端程序员!
查看>>
数据库设计中的14个技巧
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在GCE上安装Apache、tomcat等
查看>>
在Mac 系统下进行文件的显示和隐藏
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
技能点
查看>>
读书笔记《乌合之众》
查看>>
Hadoop日记Day1---Hadoop介绍
查看>>
iOS 学习资料汇总
查看>>
centos7 yum安装jdk
查看>>
Bluedroid与BluZ,蓝牙测试方法的变动(基于bludroid和BlueZ的对比)
查看>>
接口和抽象类有什么区别
查看>>
Linux 下添加用户,修改权限
查看>>
请问view controller scene,该如何删除
查看>>
bootstrap新闻模块样式模板
查看>>
zzzzw_在线考试系统①准备篇
查看>>