c - 如何知道 C 中的 char 数组是否有空元素?

标签 c arrays pointers null character-arrays

说如果我有: unsigned char* str = "k0kg"

而 0 是空元素。当我使用 for 循环遍历它时,如何检查数组是否为 null?

我试过: if (str[1]==0): 我也试过: if (str[1]=="0"):

而且他们没有工作。 :(

循环:

for (i=0;i<num_bytes;i++){
    if (str[i]!=0){
        printf("null spotted\n");
}

最佳答案

在 C 中,根据定义,字符串以 NUL 字符“\0”结束。所以所有(有效的)字符串最后都有一个'\0'。

要找到 '\0' 的位置,只需使用 strlen() 即可:

const char * const end = str + strlen(str);

如果您处理的是普通的可打印字符串,那么使用“unsigned char”很奇怪。如果你的意思是你有一个包含 bytes 的内存块并且你想找到第一个 0x00 字节,那么你需要一个指向内存开始的指针 and 内存区域的大小,以字节为单位。然后,您将使用 memchr():

// Where strSize is the number of bytes that str points to.
const unsigned char * const end = memchr(str, 0, strSize);

关于c - 如何知道 C 中的 char 数组是否有空元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21616982/

相关文章:

javascript - 使用 ramda 修改对象数组中的属性

创建多维文本数组(可能吗?)

c - define body 是另一个define

c - sockaddr 结构 - (sys/socket.h)

java - 将一个char数组转换成多个String

javascript - 使用 Vanilla JavaScript 搜索对象数组

c++ - 了解 ARM 汇编指令和 C/C++ 指针

C++ 指针赋值

我们可以在 fread 函数中使用 0 地址吗

C - 如何将链表指针内容写入文本文件