使用数组和strcat将char附加到字符串

时间:2018-09-12 16:32:17

标签: c arrays string pointers char

两个变量:string0string1。两者均为char *类型。我想做的是将string0的第ith个元素添加到string1的末尾。由于string0[i]char,所以我不能简单地使用strcat(string1, string0[i])

尽管如此,我还有其他想法:

char string0i[2] = {string0[i], '\0'};
strcat(string1, string0i);

但这会导致分段错误。为什么以及如何实现我想要的目标,即将string0的第i个元素附加到string1

2 个答案:

答案 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