gpt4 book ai didi

c - 堆栈溢出(大约 "evhttp_uri_parse")

转载 作者:行者123 更新时间:2023-11-30 17:20:47 26 4
gpt4 key购买 nike

代码实现了读取文件(包含大量url)的功能,每个url都通过“evhttp_uri_parse”获取主机和路径。但是有一个错误,evhttp_uri_parse解析失败,返回NULL。可能原因是堆栈溢出。

FILE *fp=fopen(argv[1],"rb");
if(NULL==fp)
{
printf("open url_file is error %d::%s\n",errno,strerror(errno));
return 0;
}
char url_buf[2048];
memset(url_buf,'\0',sizeof(url_buf));

fgets(url_buf,sizeof(url_buf),fp);
while(!feof(fp))
{
if(strlen(url_buf)>1)
{
printf("url_buf::%s",url_buf);
#if 1
struct evhttp_uri *ev_uri=NULL;
ev_uri=evhttp_uri_parse(url_buf);
if(ev_uri==NULL)
{
printf("parse uri error::%d,%s\n",errno,strerror(errno));
}
const char *host=evhttp_uri_get_host(ev_uri);
const char *path=evhttp_uri_get_path(ev_uri);
printf("query host::%s,path::%s\n",host,path);
evhttp_uri_free(ev_uri);
#endif
}
memset(url_buf,'\0',sizeof(url_buf));
fgets(url_buf,sizeof(url_buf),fp);
}
fclose(fp);

最佳答案

  1. fgets(url_buf,sizeof(url_buf)+1,fp) 应更改为 fgets(url_buf,sizeof(url_buf),fp)

  2. fgets 在字符串末尾添加“\n”。尝试删除它,看看是否有帮助。

关于c - 堆栈溢出(大约 "evhttp_uri_parse"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28447874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com