比方说,我有:如何防止C中复制函数期间“str 0ing”溢出?
char a[] = "str\0ing"
,我想这个字符串复制到另一个字符数组,
char b[].
然而,我的功能似乎被击中终止序列(或至少向前斜杠)并停止,这样复制到b []中的唯一东西就是“str”。到底发生了什么,我该如何解决这个问题?
我正在运行一个格式为b [i] == a [i]的简单For循环。谢谢。
编辑:我很抱歉,因为很不清楚,这是我的第一篇文章。 这是我当前的代码:
int copyStringN(char * in, char * out, int n) {
int i;
if (!in || !out) return -1;
for (i = 0; i < n; i++) {
*out++ = *in++;
}
*out= '\0';
return 0;
}
int main() {
#define N 8
char a[] = "th\0ing";
char b[N];
int err;
err = copyStringN(a, b, N);
assert (!err);
printf("%s\n", b);
return 0;
}
的限制是,它必须能够打印“\ 0”,如果它存在,所以在字符串中我不能简单地添加一个反斜杠。我必须以某种方式编码我的函数来将此字符序列解释为显式字符而不是终止符。
请显示一些代码。 – babon
然后告诉你的函数不要把'\ 0'当作终结符。 –
你必须知道数组的长度。字符数组不是字符串(通常,就像您的示例所示)。 –