如何在C中编写echo程序?

时间:2010-10-10 18:02:23

标签: c

输出应该是这样的:

Enter Character : a
Echo : a

我写了

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

但我在回声之后得到两个输入输入。

5 个答案:

答案 0 :(得分:3)

输入时检索两个字符。你需要扔掉回车。

int c = 0; 
int cr;
  while (c != EOF) 
    { 
      printf("\n Enter input: "); 
      c = getchar(); 
      cr = getchar();  /* Read and discard the carriage return */
      putchar(c); 
    } 

答案 1 :(得分:2)

作业?

如果是这样,我将不会给出完整的答案/您可能已经获得了缓冲输入 - 用户需要在将任何内容交还给您的程序之前输入。您需要了解如何关闭此功能。

(这取决于您的程序环境 - 如果您可以提供有关平台的更多详细信息以及您如何运行该程序,我们可以提供更好的答案)

答案 2 :(得分:1)

采取fgets例如:

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

你在使用getchar / scanf(%c)/'\ n'时没有任何问题,等等。

答案 3 :(得分:0)

为什么不使用scanf

示例:

char str[50];

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

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

return 0;

输出

 
 Enter input: xx
 Echo : xx

scanf reference

答案 4 :(得分:0)

#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();
}