我试图使用strncat将两个字符串与分隔符组合在一起,但是我无法得到确切的结果,.Please,让我知道为什么会出错。
#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的连接可能出错了。是否还有更有效的方法来做到这一点?
发布于 2013-10-09 15:33:33
表达式strncat(Buff,Ip2, sizeof(Ip2));是错误的,因为sizeof(Ip2)给出了Ip2指针的大小,而不是Ip2指出的字符串的长度。
在您的系统中,char指针的大小是4个字节,这就是为什么strncat()只能追加字符串Ip2 (1、9、2、.)中的4个字符。
您混淆了sizeof()运算符和字符串长度。注sizeof("||")给您3 (即"||"占用的字节数),而它的长度是2。
另外,第一个strncat(Buff,"||",sizeof("||"));运行良好,因为第三个字符是\0。
要纠正您的代码,请使用来自strlen(char *)头文件的string.h函数:
strncat(Buff, "||", strlen("||"));
strncat(Buff, Ip2, strlen(Ip2));检查这个工作代码
https://stackoverflow.com/questions/19276316
复制相似问题