在 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 循环后将修复它。
我知道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 循环后将修复它。