首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c#中用分隔符连接字符串。

在c#中用分隔符连接字符串。
EN

Stack Overflow用户
提问于 2013-10-09 15:30:53
回答 1查看 149关注 0票数 0

我试图使用strncat将两个字符串与分隔符组合在一起,但是我无法得到确切的结果,.Please,让我知道为什么会出错。

代码语言:javascript
运行
复制
  #include <stdio.h>
  #include <string.h>

  int main()
  { 
     char Buff[100];
     memset(Buff,0,sizeof(Buff));
     char *Ip="192.168.4.10";
     char *Ip2="192.168.4.20";
     strcpy(Buff,Ip);

     strncat(Buff,"||",sizeof("||"));

     strncat(Buff,Ip2,sizeof(Ip2));
     printf("%s",Buff);


  }

我得到的输出是192.168.4.10||192.,而不是两个data.What的连接可能出错了。是否还有更有效的方法来做到这一点?

EN

Stack Overflow用户

回答已采纳

发布于 2013-10-09 15:33:33

表达式strncat(Buff,Ip2, sizeof(Ip2));是错误的,因为sizeof(Ip2)给出了Ip2指针的大小,而不是Ip2指出的字符串的长度。

在您的系统中,char指针的大小是4个字节,这就是为什么strncat()只能追加字符串Ip2 (192.)中的4个字符。

您混淆了sizeof()运算符和字符串长度。注sizeof("||")给您3 (即"||"占用的字节数),而它的长度是2

另外,第一个strncat(Buff,"||",sizeof("||"));运行良好,因为第三个字符是\0

要纠正您的代码,请使用来自strlen(char *)头文件的string.h函数:

代码语言:javascript
运行
复制
strncat(Buff, "||", strlen("||"));
strncat(Buff, Ip2, strlen(Ip2));

检查这个工作代码

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19276316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档