在我的代码中,我有一个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]在该枚举中具有正确的值。
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
)。