如何知道字符数组在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:要完全正确,您应该使用单引号。