温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-06-26 02:53:35 来源:网络 阅读:558 作者:虎皮喵的喵 栏目:系统运维

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;所以一直无法为后面的操作提供有效的图片数据

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI