我使用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
我该怎么做?
答案 0 :(得分:4)
执行strcat(str2,str1);
,切换参数。但是,您将在str2
中获得结果字符串,如果您真的想在程序中进一步使用str1
,则可以将其设置为str1
。
但是,您需要适当注意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
答案 1 :(得分: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];
}
}
答案 2 :(得分:1)
尝试sprintf()
将新值打印到第一个字符串
sprintf(str1,"%s%s",str2,str1);
答案 3 :(得分:0)
您需要使用strcpy
代替strcat
。
答案 4 :(得分:0)
从man strcat
逐字逐句
char * strcat(char * dest,const char * src);
说明
strcat()函数将src字符串附加到dest字符串,覆盖dest末尾的空字节('\ 0'),然后添加一个终止空字节。字符串可能不重叠,dest字符串必须足够 结果的空间。
作为程序员,您需要确保指针char * dest
引用足够的有效内存来保存将从char
指向的位置复制的附加char* src
。
要str1
成功加上前缀str2
,请按如下方式声明:
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);