如何将字符串数组的元素连接到字符串数组?

时间:2016-03-22 05:42:16

标签: c arrays string

#include <stdio.h>
#include <string.h>
int main(){
char a[7]= "car";
char b[7]="yyoug";
strcat(a,b[2]);
puts(a);
  return 0;
}

这不会编译。它说“传递'strcat'的参数2使得整数指针没有强制转换。”我没有被教过使用指针。

3 个答案:

答案 0 :(得分:3)

b[2]属于char类型,但strcat期望其两个参数均为char *类型。
请改用strncat。如果传递的第三个参数是b[2]

,它只会向第一个字符串附加一个字节,即1
strncat(a, &b[2], 1);

答案 1 :(得分:1)

如果您只想使用strncat,因为您想了解它是如何工作的,那么@hacks示例完全是完美的。但是,如果您只想将角色连结到a,您也可以使用

a[3] = b[2];

但请记住,任何一个解决方案只有在你的情况a的目标数组足够大的情况下才有效。

答案 2 :(得分:0)

不使用malloc,这可能有助于解释

中的内容
#include <assert.h>
#include <stdio.h>
#include <string.h>
int main(){
  //positions  0    1    2    3
  //"car" == ['c', 'a', 'r', '\0']
  char a[7] = "car";
  char b[7] = "yyoug";

  //strlen("car") == 3;
  //"car"[3]      == ['\0']; 

  a[strlen(a)]    = b[2]; 
  assert(a[3] == 'o');

  a[strlen(a) + 1] = '\0';
  assert(a[4] == '\0');
  puts(a); 
    return 0;
}