如何检查char
数组是否为空终止?
char input[80];
fgets(input, sizeof(input), stdin);
for (i = 0; input[i]; i++)
{
if (input[i] == '\0') {
printf("null!!!"); // never works
}
}
例如,以下代码不会打印null
。
答案 0 :(得分:7)
在您的for
循环条件中,您已经在检查{0}的非0值,因此内部input[i]
是 dead 条件。
要进行测试,请进行无限循环,检查if
,然后打印并if
输出。像
break
答案 1 :(得分:2)
只要input[i]
为0,循环就会退出,因此永远不会执行print语句。
答案 2 :(得分:1)
如果您有兴趣,这是另一个有效的代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
char input[] = "I am a string !!";
int i = 0;
while(1) {
if (input[i] == '\0') {
printf("null!!!");
break;
}
i++;
}
}
答案 3 :(得分:0)
此处的所有答案都不会检查内存范围,因此您肯定会遇到分段错误。但是,如果在fread
期间发生错误,可能在input
中有垃圾。
char input[80];
fgets(input, sizeof(input), stdin);
for (i = 0; i<80; i++)
{
if (input[i] == '\0') {
printf("null!!!");
}
}
您也可以将if (input[i] == '\0')
更改为if (! input[i])
,因为'\0'
(空终结符)具有ASCII值0
。