我试图使用strcat函数来操作linux中的字符串,但它会引发错误。我不知道为什么..这是代码
int YX = 1234;
char YX2[100];
sprintf(YX2, "%d", YX); //converting int to str
char str[5] = {1,2,3,4,5};
strcat(YX2, str[4]);
//snprintf(YX2, sizeof(YX2), "%s%s", str[4]) <- this one won't work neither
此后系统崩溃......
答案 0 :(得分:3)
strcat
的两个参数都应该是指向空终止char
字符串(char *
类型)的指针。 str[4]
属于char
类型。
答案 1 :(得分:0)
strcat( YX2, str + 4 )
。当您将str[4]
作为参数2时,其值为'5',将其转换为指针,并从内存中的地址0x00035开始复制...这不是您想要的; char str[6] = {'1','2','3','4','5', 0}
,char str[6] = "12345"
或char str[] = "12345"
。在您的情况下,字符串末尾没有0,strcat
副本直到0。答案 2 :(得分:0)
您正在尝试使用char,就像它是char *一样。指针str为“12345”,而str [4]为字符“5”。
strcat接收两个参数(char *,char *) 当你发送(char *,char)时。
我不是百分之百你想要做的,所以我会给你两个答案。
strcat(YX2,str); 这将为您提供字符串“123412345”
或者:
YX2 [4] = str [4];或YX2 [strlen(YX2)] = str [4]; 这两个都会将角色添加到最后。