[带有strcat()的C访问冲突

问题描述 投票:0回答:1

在我的代码中,我有一个for循环,从某个点开始,通过另一个数组中的char逐个连接char。因此,例如,如果文本为“ hi,我需要帮助”并且我的起始索引为10,则它将“ help”连接到char * rs的末尾。

for (int l = start_index; l < strlen(text); l++) {
    strcat(rs, "h");
}

我测试了上面的内容,并且可以正常工作,没有错误,但是这个

for (int l = start_index; l < strlen(text); l++) {
    strcat(rs, text[l]);
}

没有。根据调试器,“ text”为char [256],而“ rs”为* char,如果有帮助的话。调试器还显示text [l]在该枚举中具有正确的值。

c string concat
1个回答
0
投票

strcat函数采用两个strings(指向strcat的指针)作为参数。从上下文看来,char是单个text[l],无法使用。

解决该问题的一种方法是为该字符创建一个小的单字符临时字符串:

char

另一种解决方案是根本不使用for (int l = start_index; l < strlen(text); l++) { char temp[] = { text[l], '\0' }; // Don't forget the terminator strcat(rs, temp); } ,而是使用strcat字符串的索引直接分配给字符串的元素:

rs

或更简单的解决方案:直接从size_t end_of_rs = strlen(rs); for (int l = start_index; l < strlen(text); l++) { rs[end_of_rs++] = text[l]; } rs[end_of_rs] = '\0'; // Make sure string is terminated 连接:

text

但是为此,您应确保strcat(rs, &text[start_index]); 不超出start_index的结尾(即,您需要验证text)。

© www.soinside.com 2019 - 2024. All rights reserved.