char hi[10] = "bye";
char a = 'a';
strcat(hi, a);
就像上面的例子一样。我怎么用C做这个?是否有一个更普通的字符串我不能让你好吗?
答案 0 :(得分:3)
a
是char
类型,而strcat
期望它都是char *
类型的参数。要将char附加到字符数组,您可以执行此操作
int index = strlen(hi);
if(index < sizeof(hi)-1)
hi[index] = a;
请注意,在此特定情况下,初始值设定项会将hi
的前三个元素分别初始化为b
,y
和e
。其余元素将初始化为0
。因此,在将每个字符附加到数组后,您不需要处理数组的空终止。但总的来说,你必须照顾好这一点。
int index = strlen(hi);
if(index < sizeof(hi)-1){
hi[index] = a;
hi[index+1] = '\0';
}
答案 1 :(得分:1)
strcat(hi, (char[]){a,0});
这会附加a
。
或者你可以这样做
char s[]={a,0};
strcat(hi,s);
或者只是
#define MAXLEN 10
...
size_t len = strlen(hi);
if( len+1 <= MAXLEN-1)
hi[len]=a,hi[len+1]=0;
else
// throw error.
在您的情况下,hi[len+1]=0
不是必需的,因为它已填充\0
。同样如Serge所述,你可以使用简单的字符串文字作为strcat
函数的第二个参数。
strcat(hi,"a");
这两者之间的细微差别再次由Serge提到,字符串文字是const
,但复合文字不是。