我試圖通過編寫我自己的函數來模仿strcpy
的工作方式。我的問題更具體到數組的大小。C字符串副本,數組的大小
我想要的stringA
內容複製到stringB
,我已經聲明爲1.
大小不應該我得到一個錯誤說
stringB
是太小,無法容納stringA
?原因,我懷疑我沒有得到一個錯誤是因爲一個數組名稱StringB被轉換爲一個指針?爲什麼
char str[1] = "abcd"
非法呢?#include <stdio.h> #include <stdlib.h> #include <string.h> void strCopy(char *source,char *destination) { printf("%p,%p\n",source,destination); while (*source != '\0') { *destination = *source; printf("> %c,%p,%p\n",*source,source,destination); source++; destination++; } *destination = '\0'; } int main(int argc,char *argv[]) { char stringA[] = "To be or not to be."; char stringB[1]; strCopy(stringA,stringB); printf("StringB: %s\n",stringB); return (0); }
這不是語言的工作原理。你可以(也可以)自由地在腳下射擊自己,並且會產生一個*形式不良的*程序。它執行*未定義的行爲*,並且對於任何定義的**沒有任何**期望(*混沌*不能抵抗的鬆散「定義」)是合理的。 – WhozCraig 2014-10-04 12:37:35
使用'valgrind'。然後你會看到你正在做一件壞事。 – skywall 2014-10-04 12:49:36
謝謝,我需要使用valgrind的memcheck功能嗎? – hmmm 2014-10-05 18:03:06