微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决检查 C 中的字符串空终止符

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

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

输出为:

0
1
2
3
4
Terminator Found

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

解决方法

施工让 forward 前进得太远了。这是因为即使循环条件为假(因为它在循环条件内),后增量也会运行。明显的固定循环如下:

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

如果您更喜欢保留 while 循环,则在 while 循环之后的 --forward 将修复它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。