strcat 将一个字符连接到一个字符串上? [英] strcat concat a char onto a string?

查看:35
本文介绍了strcat 将一个字符连接到一个字符串上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 GDB,我在尝试此操作时发现出现分段错误:

Using GDB, I find I get a segmentation fault when I attempt this operation:

strcat(string,&currentChar);

假设字符串被初始化为

char * string = "";

而 currentChar 是

and currentChar is

char currentChar = 'B';

为什么会导致分段错误?

Why does this result in a segmentation fault?

如果 strcat 不能用于此,我还能如何将 char 连接到字符串上?

If strcat can't be used for this, how else can I concat a char onto a string?

推荐答案

因为 &currentChar 不是字符串,所以它没有以 字符结束.您应该将 B 定义为 char *currentChar = 'B';.同样根据 http://www.cplusplus.com/reference/clibrary/cstring/strcat string 应该有足够的空间来保存结果字符串(本例中为 2 个字节),但它只有 1 个字节.

Because &currentChar is not a string, it doesn't finish with character. You should define B as char *currentChar = 'B';. Also according to http://www.cplusplus.com/reference/clibrary/cstring/strcat string should have enough space to hold the result string (2 bytes in this case), but it is only 1 byte.

或者如果你想使用 char 那么你可以做类似的事情(取决于你的代码):

Or if you want to use char then you can do something like (depending of your code):

char string[256];
...

char currentChar = 'B';
size_t cur_len = strlen(string);
if(cur_len < 254) {
    string[cur_len] = currentChar;
    string[cur_len+1] = '';
}
else
    printf("Not enough space");

这篇关于strcat 将一个字符连接到一个字符串上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆