我正在尝试将一个字符数组传递给另一个函数,但某些字符可能是\0。 该数组是两个字符串的 'xor' 的输出,因此\0 的示例可以是: \0 = 'A' ^ 'A'
例如,如果我尝试将 arr[3] = {\0,1,2} 发送到 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';
}
最佳答案
总结我的回答和@cody-gray 的回答。
null
字符串终止符仅在您将其用作字符串时适用。
如果您将它用作 char
数组,那么它就是一个与任何其他值一样的值。
为了能够使用它,您需要将数组的大小作为附加参数传递,并使用该大小而不是根据任何终止符循环遍历数组。
void foo(char* c, int size){
...
}
关于c - 将带有\0 字符的字符数组传递给其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23653851/