如何使用 if else 并检查字符串的最后一个字符''?



在C中,字符串显然像数组一样存储,末尾有null值或'\0'。我希望在for循环中对字符串进行迭代,我需要它停止在"\0"处,而不包括它。我已经尝试了许多if-else的条件,但似乎都不起作用。

例如:

char patternInput[TEXTSIZE];
for(int i = 0; i<strlen(patternInput);i++)
{
if(patternInput[i]==NULL)
{
printf("nlast character");
break;
}
else
{
printf("n%c",patternInput[i]);
}
}

我试过if(patternInput[i]==NULL)if(patternInput[i]==NUL)if(!patternInput[i])if(patternInput[i]==''),但似乎都不起作用。

如果您自己扫描字符,您可以完全避免(冗余且有点昂贵的(strlen()调用,而是在for循环的延续测试中使用patternInput[i]的值:

char patternInput[TEXTSIZE] = "testing!";
for(int i = 0; patternInput[i] != ''; i++)
{
printf("n%c",patternInput[i]);
}
printf("nlast charactern");

考虑一下这段代码。此代码打印带有字符位置的"找到Null字符"。注意循环不变量中i<=strlen(str)中的"小于或等于"。

长度为strlen+1的最后一个字符是"\0"字符。

int i = 0;

char str[] = "Hello";

for(int i=0; i<=strlen(str); i++)
{
if(str[i]=='')
printf("Null character found at position %d", i);
}

最新更新