开发者社区> 问答> 正文

c处理字符串,输出时尾部总带随机乱码:报错

我的开发环境是virtualbox下的lubuntu,编辑器是vscode。
看我用vscode就知道我是个写c#的,对c不太懂,最近用c写一个使用libcpap来抓取http包的小软件,但是抓取到后,输出文本总会随机的在字符串尾部有多余的字符出现,处理了好久都无法解决,所以发帖来请教各位。
代码我放在了git.oschina.net ,地址:http://git.oschina.net/lixin/httpSniff
出现的问题效果是这样的:

关键的代码如下:

host_len=i-host_index;
            u_char url[host_len+path_len];
            
            memcpy(url,payload+host_index,host_len);
            memcpy(url+host_len,payload+path_index,path_len);
            FILE *fp=fopen("/home/lixin/httpsniff.txt","at");
            fputs(url,fp);
            fputs("\r\n",fp);
            // fputs(payload,fp);
            fputs("\r\n-----------------\r\n",fp);
            fclose(fp);

            return  ;

展开
收起
kun坤 2020-06-09 13:41:19 731 0
1 条回答
写回答
取消 提交回答
  • 不就是内存没初始化。。
    u_char url[host_len+path_len] = {0}; ###### 答案已经出来了,问题解决
    输出字符串的时候,最后一个字节应该是“\0"。所以代码应该改为:
    char *url[n+1];
    url[n]='\0';

    2020-06-09 13:41:26
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载