Bla*_*ary 10 c string concatenation char strcat
使用GDB,我发现在尝试此操作时出现了分段错误:
strcat(string,¤tChar);
鉴于该字符串被初始化为
char * string = "";
和currentChar是
char currentChar = 'B';
为什么会导致分段错误?
如果strcat不能用于此,我怎么能将char连接到一个字符串?
gag*_*lo7 12
正如其他人的回应,¤tChar是指向char或char*的指针,但C中的字符串是char []或const char*.
使用strcat将char连接到字符串的一种方法是创建最小字符串并使用它将char转换为字符串.
例:
制作一个简单的字符串,只有1个字符,后缀为'\ 0' ;
char cToStr[2];
cToStr[1] = '\0';
适用于您的问题:
char * string = "";
char currentChar = 'B';
cToStr将采用字符串"B":
cToStr[0] = currentChar;
strcat会起作用!
strcat ( string, cToStr );
因为¤tChar它不是字符串,所以它不会以\0字符结束.你应该定义B为char *currentChar = 'B';.另外根据http://www.cplusplus.com/reference/clibrary/cstring/strcat string应该有足够的空间来保存结果字符串(在这种情况下为2个字节),但它只有1个字节.
或者如果你想使用char那么你可以做类似的事情(取决于你的代码):
char string[256];
...
char currentChar = 'B';
size_t cur_len = strlen(string);
if(cur_len < 254) {
    string[cur_len] = currentChar;
    string[cur_len+1] = '\0';
}
else
    printf("Not enough space");