Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道字符数组在C中是否有空元素?_C_Arrays_Pointers_Null_Character Arrays - Fatal编程技术网

如何知道字符数组在C中是否有空元素?

如何知道字符数组在C中是否有空元素?,c,arrays,pointers,null,character-arrays,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"); } for(i=0;i如果您实际上在查找null元素,则应执行以下条件: if(str[

如果我有:
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");
}

for(i=0;i如果您实际上在查找null元素,则应执行以下条件:

if(str[i]=='\0')

如果您实际上正在查找null元素,则应执行以下条件:

if(str[i]=='\0')

在C语言中,根据定义,字符串以NUL字符“\0”结尾。因此,所有(有效)字符串的末尾都有一个“\0”

要查找“\0”的位置,只需使用strlen():

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


在C语言中,根据定义,字符串以NUL字符“\0”结尾。因此,所有(有效)字符串的末尾都有一个“\0”

要查找“\0”的位置,只需使用strlen():

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

如果我有:unsigned char*str=“k0kg”

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

你的术语将使任何C程序员感到困惑。你将字符表示与值混淆。你不是在寻找空字符(“空元素”,即
'\0'
),而是在寻找字符
'0'
。所以

int len = strlen(str);
for(int i = 0; i < len; ++i) {
    if(str[i] == '0')
        printf("found it");
}
int len=strlen(str);
对于(int i=0;i
如果我有:unsigned char*str=“k0kg”

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

你的术语将使任何C程序员感到困惑。你将字符表示与值混淆。你不是在寻找空字符(“空元素”,即
'\0'
),而是在寻找字符
'0'
。所以

int len = strlen(str);
for(int i = 0; i < len; ++i) {
    if(str[i] == '0')
        printf("found it");
}
int len=strlen(str);
对于(int i=0;i
使用
strchr

#include <stdio.h>
#include <string.h>

int main(){
    char *str = "k0kg";
    char *p = strchr(str, '0');
    if(p){
        printf("find at %d\n", (int)(p - str));//find at 1
    }
    if(p=strchr(str, 0)){
        printf("find at %d\n", (int)(p - str));//find at 4
    }
    str = "k\0kg";
    if(p=strchr(str, 0)){
        printf("find at %d\n", (int)(p - str));//find at 1
    }

    return 0;
}
#包括
#包括
int main(){
char*str=“k0kg”;
char*p=strchr(str,'0');
如果(p){
printf(“在%d\n处查找,(int)(p-str));//在1处查找
}
如果(p=strhr(str,0)){
printf(“在%d\n处查找,(int)(p-str));//在4处查找
}
str=“k\0kg”;
如果(p=strhr(str,0)){
printf(“在%d\n处查找,(int)(p-str));//在1处查找
}
返回0;
}

使用
strchr

#include <stdio.h>
#include <string.h>

int main(){
    char *str = "k0kg";
    char *p = strchr(str, '0');
    if(p){
        printf("find at %d\n", (int)(p - str));//find at 1
    }
    if(p=strchr(str, 0)){
        printf("find at %d\n", (int)(p - str));//find at 4
    }
    str = "k\0kg";
    if(p=strchr(str, 0)){
        printf("find at %d\n", (int)(p - str));//find at 1
    }

    return 0;
}
#包括
#包括
int main(){
char*str=“k0kg”;
char*p=strchr(str,'0');
如果(p){
printf(“在%d\n处查找,(int)(p-str));//在1处查找
}
如果(p=strhr(str,0)){
printf(“在%d\n处查找,(int)(p-str));//在4处查找
}
str=“k\0kg”;
如果(p=strhr(str,0)){
printf(“在%d\n处查找,(int)(p-str));//在1处查找
}
返回0;
}

“0”
是字符零,也称为ascii字符48(0x30十六进制)。
0
是值零,也称为空/false@MarcB要100%正确,您应该使用单引号,而不是双引号。@MarcB:要完全正确,您应该使用单引号。
“0”是字符零,又称ascii字符48(0x30十六进制).
0
的值为零,也称为空/false@MarcB要100%正确,您应该使用单引号,而不是双引号。@MarcB:要完全正确,您应该使用单引号。