c - 将带有\0 字符的字符数组传递给其他函数

标签 c arrays null

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

相关文章:

ruby-on-rails - Nils 和方法链

PHP - 包含 unicode 的 SQL 查询由于某种原因返回 NULL

计算 IP 头长度

c - OpenSSL 取消引用指向不完整类型的指针

c++ - 用于有序组合生成和排名的库?

c - 递归函数返回难以理解的答案

c# - 带有空值的 SQL Server 查询

android - 在 Eclipse 中使用 NDK

javascript - 在javascript中使用php数组填充 'select' ajax

ios - 如何在 Swift 中按数组元素分组