两个变量:string0
和string1
。两者都是char *
类型。我想要做的是将string0
的第i个元素添加到string1
的末尾。由于string0[i]
是char
,我不能简单地使用strcat(string1, string0[i])
。
不过,我有其他想法:
char string0i[2] = {string0[i], '\0'};
strcat(string1, string0i);
但这会导致分段错误。为什么以及如何实现我想要的,即将string0
的第i个元素附加到string1
?
尝试这样的事情
/* 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
strcat添加char?矫枉过正。
char *addchar(char *dest, const char *src, size_t nth)
{
size_t len = strlen(dest);
dest[len++] = src[nth];
dest[len] = 0;
return dest;
}