если кто-то войдет, ничего не написав, он должен прекратиться

#include<stdio.h>
int main()
{
    char c;
    c=getchar();
    while(c!='\0')
    {
        printf("%c",c);
        c=getchar();
    }   
    return 0; 
}

Мы хотели бы завершить программу, введя с клавиатуры символ NULL, но он не работает.


person Ganesh    schedule 07.07.2019    source источник
comment
Вы можете найти это полезным: stackoverflow.com/questions/9124786/   -  person psq    schedule 07.07.2019
comment
Обратите внимание, что обычный способ написания этого кода - чтение до конца ввода, а не до достижения какого-то произвольного символа. Для этого вам нужно исправить тип c (он должен быть int c;) и изменить условие цикла: while (c != EOF)   -  person melpomene    schedule 07.07.2019
comment
Вы хотите, чтобы если кто-то вошел, ничего не написав, он должен был прекратиться или что-то еще?   -  person GameChanger    schedule 07.07.2019
comment
@GameChanger да правильно, ищем то же самое. как мы можем завершить в этом случае.?   -  person Ganesh    schedule 07.07.2019
comment
Это не нулевой символ, это новая строка.   -  person Barmar    schedule 07.07.2019
comment
Если пользователь нажимает клавишу ВВОД, появляется символ '\n', а не '\0'.   -  person melpomene    schedule 07.07.2019
comment
просто хотел понять, есть ли способ заранее ввести нулевой символ в языке c?   -  person Ganesh    schedule 07.07.2019
comment
Ага! Почему вы все время меняете свой вопрос? Связанный дубликат объясняет именно это: способ ввода символа NUL (независимо от языка; он не имеет ничего общего с C).   -  person melpomene    schedule 07.07.2019
comment
@melpomene мне так не подходит   -  person GameChanger    schedule 07.07.2019
comment
@GameChanger Какой терминал вы используете? Например. Я не могу найти способ, который работает на консоли Windows 7, но в Linux проблем нет.   -  person melpomene    schedule 07.07.2019
comment
Я использую Windows 10, и я также не могу найти способ, который помог бы мне ввести нулевой символ.   -  person GameChanger    schedule 07.07.2019
comment
Не вводите нулевой символ в качестве индикатора конца строки. Нормальные люди не пишут string + nul-char в качестве входных данных. Большинство вводят string и ожидают, что программа примет это в качестве входных данных. Вот почему int c = getchar(); while (c != '\n' && c != EOF) c = getchar(); является нормой для символьного ввода. Для строчно-ориентированного ввода fgets() (или POSIX getline) являются нормой. Для форматированного ввода затем fgets(), за которым следует sscanf() (или в некоторых случаях просто fscanf()). Выберите подходящий инструмент для работы.   -  person David C. Rankin    schedule 07.07.2019


Ответы (1)


Как отмечалось ранее, ввести символ '\ 0' из терминала можно следующим образом:

  • Ctrl + @

  • Ctrl + ПРОБЕЛ

Соответствующий код c может быть следующим:

#include <stdio.h>

int main()
{
  char c;

  do
  {
    c = getchar();
    if ((c == EOF) || (c == '\0'))
    {
      break;
    }
    printf("%c", c);
  } while (c != '\n');

  return 0;
}
person Picaud Vincent    schedule 07.07.2019