c 语言中,当使用 strcat 连接 IP 地址的时候,会自动跳出循环怎么解决?

2016-02-10 19:10:17 +08:00
 fkbd
for(int i=0;i<10;i++){      
        char o1[]="reg add \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\" /v ProxyServer /d \"";
        char o2[]="\" /f";
        char ip[100][100]={"183.140.162.58","1.14.1.1"};
        strcat(o1,ip[i]);
        cout<<strcat(o1,o2)<<endl;
    }

发现当数组中出现 ip : 183.140.162.58 之后会自动跳出循环

1629 次点击
所在节点    问与答
5 条回复
wujichao
2016-02-10 19:31:56 +08:00
http://baike.baidu.com/item/strcat
百度百科说"d 和 s 所指内存区域不可以重叠且 d 必须有足够的空间来容纳 s 的字符串。"

改成 char o1[1000] 试试?
theoractice
2016-02-10 19:32:28 +08:00
你把常量字符区的内存地址赋给 strcat 了。
自己另开个数组,换 sprintf 。
fkbd
2016-02-10 19:33:44 +08:00
@wujichao
@theoractice
谢谢两位 改成 char o1[1000]后问题解决了
yksoft1
2016-02-10 20:17:23 +08:00
1 、这是 C++,不是 C 语言
2 、为啥不使用 std::string
3 、比起使用 reg 命令,为啥不直接使用 Windows API 访问注册表
wizardforcel
2016-02-10 20:22:29 +08:00
你都用了 c++了还不用 std::string 。简直难以容忍。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/256008

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX