使用数组和strcat将字符串附加到字符串[关闭]

问题描述 投票:-1回答:2

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

不过,我有其他想法:

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

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

c arrays string pointers char
2个回答
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

2
投票

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.