在c中连接字符串与它们之间的分隔符

时间:2013-10-09 15:30:53

标签: c

我正在尝试使用strncat将两个字符串与它们之间的分隔符组合在一起,但我无法得到确切的结果。请让我知道它为什么会出错。

  #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.,而不是两个数据的串联。可能出错了。还有更有效的方法吗?

1 个答案:

答案 0 :(得分:2)

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

在你的系统中,char指针的大小是4个字节,这就是strncat()只能追加来自字符串Ip2192的4个字符的原因, .)。

您在sizeof()运算符和字符串长度之间混淆。注意sizeof("||")为您提供3(即"||"个字节数),而其长度为2

此外,第一个strncat(Buff,"||",sizeof("||"));效果很好,因为第三个字符为\0

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

strncat(Buff, "||", strlen("||"));
strncat(Buff, Ip2, strlen(Ip2));

Check this working code