2016-01-27 12 views

回答

7

在你for环情况下,你已经检查的input[i]非0值,所以内部的if条件。

为了测试,做一个无限循环,检查if然后打印和break出来。像

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

只要input[i]东西0退出循环,所以永远不会执行该打印语句。

+0

更新的问题 – avasin

+0

@avasin请**不要**。它使所有以前的回答者显得愚蠢。我已经回滚了。 –

+0

@SouravGhosh我刚刚添加了更多信息>< – avasin

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++; 
    } 
} 
0

这里所有的答案不检查内存边界,所以你肯定会碰到一个分段错误。 但是,如果在fread ing期间发生错误,您可能在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

+1

在所有应有的尊重下,您是否在提名其他答案为错误之前阅读过'fgets()'手册页?它不是间接强加界限吗? :) –

+0

@SouravGhosh,是的,为什么?好的,我现在看到这些答案在打印后有一个“中断”。 – ForceBru

+0

'if(!input [i])'也会被执行为'0'值,不是吗? (有效字符) – avasin

相关问题