4

strcat()用来连接两个字符串,例如:

    #include <string.h>
    #include <stdio.h>

    int main(int argc, char *args[])
    {
       char *str1; // "456"
       char *str2; // "123"

       strcat(str1,str2);
       printf("%s",str1);
    }

我得到:

456123  

但我需要在第一个字符串开头的第二个字符串,例如:

123456

我该怎么做 ?

4

5 回答 5

7

strcat(str2,str1);,切换参数。但是你会得到结果字符串 in ,如果你真的想在你的程序中进一步使用str2,你可以设置它。str1str1

但是,您需要适当注意str2.


如果您想更改str1,请执行此操作

char *tmp = strdup(str1);

strcpy(str1, str2); //Put str2 or anyother string that you want at the begining
strcat(str1, tmp);  //concatenate previous str1

...
free(tmp); //free the memory
于 2013-05-26T13:30:17.023 回答
2

尝试sprintf()将新值打印到第一个字符串

sprintf(str1,"%s%s",str2,str1);
于 2021-07-09T17:32:45.873 回答
1

尝试将它与静态大小的数组一起使用,在我的项目中对我有用。

void strbeg(char* strReceive, char* strInsert)
{
    int strInsertLength = strlen(strInsert);
    int strReceiveLength = strlen(strReceive);

    for(int i = strReceiveLength; i >= 0; i--)
    {
        strReceive[i + strInsertLength] = strReceive[i];
    }

    for(int i = 0; i < strInsertLength; i++)
    {
        strReceive[i] = strInsert[i];
    }
}
于 2014-04-02T12:14:42.933 回答
0

您需要使用strcpy而不是strcat.

于 2013-05-26T13:29:17.820 回答
0

逐字逐句man strcat

char *strcat(char *dest, const char *src);

描述

strcat() 函数将 src 字符串附加到 dest 字符串,覆盖 dest 末尾的空字节 ('\0'),然后添加终止空字节。字符串不能重叠,并且目标字符串必须有足够的空间用于结果。

作为程序员,您需要确保指针char * dest引用足够的有效内存来保存char将从char* src指向的位置复制的附加 s。

要成功str1str2声明它们,如下所示:

char str2[3 + 1] = "123"; // three for "123" plus 1 for the terminating 0
char str1[2 + 3 + 1] = "46"; // 2 for "46" plus 3 for "123" plus 1 for the terminating zero

要实际连接两个char数组,请执行以下操作:

strcat(str1, str2);
于 2013-05-26T13:42:03.880 回答