在C中使用strcat时出错

时间:2015-09-25 19:24:56

标签: c string

我试图使用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

此后系统崩溃......

3 个答案:

答案 0 :(得分:3)

strcat的两个参数都应该是指向空终止char字符串(char *类型)的指针。 str[4]属于char类型。

答案 1 :(得分:0)

  1. 将strcat更改为strcat( YX2, str + 4 )。当您将str[4]作为参数2时,其值为'5',将其转换为指针,并从内存中的地址0x00035开始复制...这不是您想要的;
  2. 将定义更改为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]; 这两个都会将角色添加到最后。