Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我能';看不到数组中的最后一个字符是空终止符吗?_C_Arrays_Loops_Null_Null Terminated - Fatal编程技术网

C 为什么我能';看不到数组中的最后一个字符是空终止符吗?

C 为什么我能';看不到数组中的最后一个字符是空终止符吗?,c,arrays,loops,null,null-terminated,C,Arrays,Loops,Null,Null Terminated,如何检查char数组是否以null结尾 char input[80]; fgets(input, sizeof(input), stdin); for (i = 0; input[i]; i++) { if (input[i] == '\0') { printf("null!!!"); // never works } } 例如,下面的代码没有在循环条件下的中打印null,您已经在检查input[i]的非0值,因此内部if是死区 要进行测试,请做一个无限循环,

如何检查
char
数组是否以null结尾

char input[80];

fgets(input, sizeof(input), stdin);

for (i = 0; input[i]; i++)
{
    if (input[i] == '\0') {
       printf("null!!!"); // never works
    }
}

例如,下面的代码没有在
循环条件下的
中打印
null

,您已经在检查
input[i]
的非0值,因此内部
if
是死区

要进行测试,请做一个无限循环,检查
if
,然后打印并
break
out。差不多

for (i = 0; ; i++)
{
    if (input[i] == '\0') {
       printf("null!!!\n");  // now works
       break;
    }
}

只要
input[i]
为0,循环就会退出,因此永远不会执行print语句

如果您感兴趣,下面是另一个工作代码:

#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++;
    }
}
#包括
#包括
int main(){
字符输入[]=“我是一个字符串!!”;
int i=0;
而(1){
如果(输入[i]='\0'){
printf(“null!!!”);
打破
}
i++;
}
}
此处的所有答案都不会检查内存边界,因此您肯定会遇到分段错误。但是,如果在
fread
ing期间发生错误,则
输入中可能存在垃圾

char input[80];

fgets(input, sizeof(input), stdin);

for (i = 0; i<80; i++)
{
    if (input[i] == '\0') {
        printf("null!!!"); 
    }
}
char输入[80];
fgets(输入,sizeof(输入),标准输入);

对于(i=0;i@avasin请不要这样做。这会让以前所有的回答看起来都很愚蠢。我已经回过头来了。恕我直言,在将其他答案指定为错误之前,您是否阅读了
fgets()
手册页?这不是间接地强加了界限吗?:)@SouravGhosh,是的,为什么?好的,我现在看到这些答案在打印后有一个
break
if(!input[I])
也将对
0
值执行,不是吗?(有效字符)@avasin,
!只有当输入[i]
为零且空终止符在ASCII中为
0
时,输入[i]
才会计算为真。