两个变量:string0
和string1
。两者均为char *
类型。我想做的是将string0
的第ith个元素添加到string1
的末尾。由于string0[i]
是char
,所以我不能简单地使用strcat(string1, string0[i])
。
尽管如此,我还有其他想法:
char string0i[2] = {string0[i], '\0'};
strcat(string1, string0i);
但这会导致分段错误。为什么以及如何实现我想要的目标,即将string0
的第i个元素附加到string1
?
答案 0 :(得分:2)
strcat添加字符?过度杀伤
char *addchar(char *dest, const char *src, size_t nth)
{
size_t len = strlen(dest);
dest[len++] = src[nth];
dest[len] = 0;
return dest;
}
答案 1 :(得分:0)
尝试类似的方法
/* strncat example */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main ()
{
char * string0="whatever";
char * string1="whoever";
size_t l = strlen(string1);
char * str1 = malloc(l+2);
strcpy (str1,string1);
int i=3;
int len = 1;
strncat (&(str1[l]), &(string0[i]), len);
//you can also simply do
//str1[l] = string0[i];
//str1[l + 1] = 0;
puts (str1);
return 0;
}
您分配的变量具有足够的空间,因此strlen(string1)+2
然后使用strcpy
将string1复制到较大的变量中,而您想查找的函数是strncat
(请参阅http://www.cplusplus.com/reference/cstring/strncat/),它将附加有限数量的字符。
是
whoevert