strcat() 的访问冲突
Access violation with strcat()
在我的代码中,我有一个 for 循环,用于从某个点开始从另一个数组逐个字符地连接字符。因此,例如,如果文本是 "hi i need help" 并且我的起始索引是 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
函数接受两个字符串(指向char
的指针)作为参数。从上下文看来 text[l]
是一个不能使用的单个 char
。
解决这个问题的一种方法是为角色创建一个小的单字符临时字符串:
for (int l = start_index; l < strlen(text); l++) {
char temp[] = { text[l], '[=10=]' }; // 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] = '[=11=]'; // Make sure string is terminated
或者更简单的解决方案:直接从 text
:
连接
strcat(rs, &text[start_index]);
但是为此你应该确保 start_index
没有超出 text
的结尾(即你需要验证 start_index < strlen(text)
)。
在我的代码中,我有一个 for 循环,用于从某个点开始从另一个数组逐个字符地连接字符。因此,例如,如果文本是 "hi i need help" 并且我的起始索引是 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
函数接受两个字符串(指向char
的指针)作为参数。从上下文看来 text[l]
是一个不能使用的单个 char
。
解决这个问题的一种方法是为角色创建一个小的单字符临时字符串:
for (int l = start_index; l < strlen(text); l++) {
char temp[] = { text[l], '[=10=]' }; // 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] = '[=11=]'; // Make sure string is terminated
或者更简单的解决方案:直接从 text
:
strcat(rs, &text[start_index]);
但是为此你应该确保 start_index
没有超出 text
的结尾(即你需要验证 start_index < strlen(text)
)。