2011-04-20 126 views
0

我是一个为输入被重定向到文件的学校编写C程序的新手。我将仅使用getchar()来检索信息。我正在使用Windows Visual 2008,我无法弄清楚为什么我的代码不会退出循环。谁能帮我吗?谢谢。while while循环中的getchar()问题

while (rec != 'EOF') 
{ 
    while (rec != '\n') 
    { 
     variable=getchar; 
     printf ("this is variable %c"); 
    } 
} 

回答

2
while (rec != EOF) 
{ 
    rec=getchar(); 
    if((rec != '\n') && (rec != EOF)){  
      printf ("this is variable %c\n",rec); 
    } 
} 
+0

您留下的失误上'getchar'无'()'和printf不会将'%c'绑定到'rec'。尽管你已经把rec的值设置得更好了。 – 2011-04-20 04:38:58

0
int c = 0; 
while (c != EOF) { 
    c = getchar(); 

    if (c == '\n') 
     break; 

    printf("c:%c\n", c); 
} 
+0

停止在第一个'\ n'处。我不确定那是需要的。 – JeremyP 2011-04-20 08:48:53

0

答案取决于什么是真正需要的。如果你要打印的每一个字符,除了新行,你想要的东西,如:

int c = getchar(); // Note c is defined as an int otherwise the loop condition is broken 
while (c != EOF) 
{ 
    if (c != `\n`) 
    { 
     printf("c:%c\n", c); 
    } 
    c = getchar(); 
} 

如果你只是想在第一行中的字符:

int c = getchar(); 
while (c != EOF && c != `\n`) 
{ 
    printf("c:%c\n", c); 
    c = getchar(); 
}