比方說,我有:如何防止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'當作終結符。 –
你必須知道數組的長度。字符數組不是字符串(通常,就像您的示例所示)。 –