#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使得整数指针没有强制转换。”我没有被教过使用指针。
答案 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;
}