在 C 中检查字符串空终止符

Checking for string null terminators in C

我知道C中的空终止符用[=12=]表示,数值为0。但是,当我执行下面的代码时,程序将空终止符视为%.我在网上搜索了这个,但找不到遇到此问题的人。

int main(){
    char* forward = "hello";
    int forward_length = 0;
    while (*(forward++) != '[=10=]') {
        printf("%d\n", forward_length++);
    }
    if(*forward == '%'){
        printf("Terminator Found");
    }
}

输出为:

0
1
2
3
4
Terminator Found

显然,forward[5] 不等于字符 %。有人可以告诉我程序有什么问题吗?

建设离开 forward 太过分了。这是因为即使循环条件为假(因为它在循环条件内),post-增量也会 运行。明显的固定循环如下:

   for (;*forward != '[=10=]'; ++forward)
       printf("%d\n", forward_length++);

如果您希望保留 while 循环,--forward while 循环后将修复它。