说如果我有:
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/