我使用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
怎么做呢?
7条答案
按热度按时间tp5buhyn1#
执行
strcat(str2,str1);
,切换参数。但是你会得到str2
中的结果字符串,如果你真的想在程序中进一步使用str1
,你可以将其设置为str1
。但是,您需要适当地注意
str2
中可用的内存空间。如果您想更改
str1
,请执行以下操作zxlwwiss2#
尝试
sprintf()
将新值打印到第一个字符串qnyhuwrf3#
尝试使用静态大小的数组,在我的项目中为我工作。
vc9ivgsu4#
您需要使用
strcpy
而不是strcat
。kyvafyod5#
来自
man strcat
的逐字记录:char *strcat(char *dest,const char *src);
说明
strcat()函数将src字符串附加到dest字符串,覆盖dest末尾的空字节('\0'),然后添加一个终止空字节。字符串不能重叠,并且dest字符串必须有足够的空间用于结果。
作为程序员,您需要确保指针
char * dest
引用足够的有效内存来保存将从char* src
指向的位置复制的附加char
s。要成功地将
str1
前缀为str2
,请按如下方式声明它们:要实际连接两个
char
数组,请执行以下操作:8ulbf1ek6#
如果你因为有两个大小不同的未分配字符串而在这上面segfault,也许它会解决这个问题。我首先计算了大小差异,以分配第一个具有较大大小的字符串(其中[padding]将在开始时连接)。然后添加了@罗汉的代码。
d7v8vwbk7#
如果你只想添加一个字符: