将带有\ 0 char的char数组传递给其他函数

时间:2014-05-14 11:47:37

标签: c arrays null

我正在尝试将char数组传递给另一个函数,但有些字符可能是\ 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';
}

1 个答案:

答案 0 :(得分:1)

总结我和@cody-grey的答案。

null字符串终结符仅在您将其用作字符串时才适用。

如果您将其用作char的数组,那么它就像其他任何值一样。

为了能够使用它,您需要将数组的大小作为附加参数传递,并使用大小循环遍历数组,而不是根据任何终止符。

void foo(char* c, int size){
    ...
}