Как мне написать эхо-программу на C? - PullRequest
4 голосов
/ 10 октября 2010

вывод должен быть примерно таким:

Enter Character : a
Echo : a

Я написал

int c;
  while (c != EOF)
    {
      printf("\n Enter input: ");
      c = getchar();
      putchar(c);
    }

Но я получаю два Вводных ввода после эха.

Ответы [ 5 ]

3 голосов
/ 10 октября 2010

Два символа извлекаются во время ввода. Вам нужно выбросить возврат каретки.

int c = 0; 
int cr;
  while (c != EOF) 
    { 
      printf("\n Enter input: "); 
      c = getchar(); 
      cr = getchar();  /* Read and discard the carriage return */
      putchar(c); 
    } 
2 голосов
/ 10 октября 2010

Домашнее задание

Если это так, я не буду давать полный ответ / Вы, вероятно, получили буферизованный ввод - пользователь должен ввести return, прежде чем что-либо будет возвращено вашей программе. Вам нужно выяснить, как это отключить.

(это зависит от среды вашей программы - если бы вы могли дать более подробную информацию о платформе и о том, как вы запускаете программу, мы могли бы дать лучшие ответы)

1 голос
/ 11 октября 2010

берите fgets, например:

char c[2];
if( fgets( c, 2, stdin ) )
  putchar( *c );
else
  puts("EOF");

, и у вас нет проблем с getchar / scanf (% c) / '\ n' и т. Д.

0 голосов
/ 11 июня 2017
#include <stdio.h>
#include <conio.h>

main(){
    int number;
    char delimiter;
    printf("enter a line of positive integers\n");
    scanf("%d%c", &number, &delimiter);
    while(delimiter!='\n'){
        printf("%d", number);
        scanf("%d%c", &number, &delimiter);
    }
    printf("\n");
    getch();
}
0 голосов
/ 10 октября 2010

Почему бы вам не использовать scanf вместо этого?

Пример:

char str[50];

printf("\n Enter input: ");
scanf("%[^\n]+", str);

printf(" Echo : %s", str);

return 0;

Выходы

 
 Enter input: xx
 Echo : xx

ссылка на scanf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...