我想傳遞一個字符數組到另一個函數,但一些字符可能是\ 0。 陣列是兩個串的「異或」和因此的\ 0的一例的輸出可以是: \ 0 =「A」 ^「A」傳遞一個字符數組與 0字符到其他函數
如果我例如嘗試發送ARR [3] = { \ 0,1,2} to func foo:
void foo(char* c){
...
}
然後c將等於「」。
在C中做正確的方法是什麼?
編輯: 我最終使用@AntonH和@Cody灰色技巧解決了它,我發送了我想要複製的字符串的大小,並在我的foo函數中使用它。
例如在功能串聯我的字符串:
void catMsg(char* dest, char* source, int sourceSize)
{
int i,destLen;
destLen= strlen(dest) ;
for(i=0;i<sourceSize-1;i++)
dest[destLen+i] = source[i];
dest[destLen+i] = '\0';
}
它的工作方式如果你使用它作爲一個字符串。如果您將它用作數據數組,請根據數組的大小發送大小(void foo(char * c,int size)')並循環。 – AntonH
這是沒有問題的,你只需要傳遞數組的* length *作爲參數,因爲沒有可用於自動確定它的標記值。 –
[nul終止一個int數組]可能的重複(http://stackoverflow.com/questions/2998983/nul-terminating-a-int-array) –