C编程:查找具有空字节的字符*的长度

Bhu*_*bus 1 c char

如果我有一个包含NULL字节的字符指针,那么我可以使用任何内置函数来查找长度,还是只需编写自己的函数?顺便说一下,我正在使用gcc.

编辑:

应该提到的是使用malloc()创建的字符指针.

Eva*_*ran 8

如果你有一个指针,那么知道大小的唯一方法是单独存储大小或具有终止字符串的唯一值.(通常'\0')如果你没有这些,那就根本无法完成.

编辑:既然您已指定使用缓冲区分配缓冲区,malloc那么答案就是上面的段落.您需要记住您分配了多少,malloc或者只是具有终止值.

如果你碰巧有一个数组(如char s[] = "hello\0world";:)那么你可以诉诸sizeof(s).但要非常小心,当你用指针尝试它时,你将获得指针的大小,而不是数组的大小.(但是strlen(s)相同,5因为它计入第一个'\0').

另外,数组在传递给函数时会衰减为指针.因此,如果将数组传递给函数,则返回到正方形.

注意:

void f(int *p) {}
Run Code Online (Sandbox Code Playgroud)

void f(int p[]) {}
Run Code Online (Sandbox Code Playgroud)

void f(int p[10]) {}
Run Code Online (Sandbox Code Playgroud)

都是一样的.在所有3个版本中,p是一个指针,而不是一个数组.