getchar() в вопросе цикла while

#c #loops #getchar

#c #циклы #getchar

Вопрос:

Я новичок, пишущий программу на C для школы, где входные данные перенаправляются в файл. Я должен использовать getchar() только для извлечения информации. Я использую Windows Visual 2008 и не могу понять, почему мой код не завершает цикл. Кто-нибудь может мне помочь? Спасибо.

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

Ответ №1:

 while (rec != EOF)
{
     rec=getchar();
     if((rec != 'n') amp;amp; (rec != EOF)){     
          printf ("this is variable %cn",rec);
     }
}
  

Комментарии:

1. Вы оставили ошибки в getchar without () и в printf, который не привязывает %c к rec . Однако вы установили значение rec в лучшем месте.

Ответ №2:

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

    if (c == 'n')
        break;

    printf("c:%cn", c);
}
  

Комментарии:

1. Это заканчивается на первом n . Я не уверен, что это то, что нужно.

Ответ №3:

Ответ зависит от того, что действительно необходимо. Если вы хотите напечатать все символы, кроме новых строк, вам нужно что-то вроде:

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

Если вам просто нужны символы в первой строке:

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