2010-10-10 8 views
4

la sortie devrait être quelque chose comme ceci:Comment écrire un programme d'écho en C?

Enter Character : a 
Echo : a 

j'ai écrit

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

Mais je reçois deux Entrez entrée après la echos.

+0

Voulez-vous renvoyer uniquement un caractère ou la ligne entière? Le programme d'écho fait écho à toute la ligne. http://en.wikipedia.org/wiki/Echo_%28command%29 – Arun

+1

@ArunSaha: Je doute que OP veut dire la commande 'echo'. 'echo' imprime ses arguments, pas d'entrée standard. – schot

Répondre

3

Deux caractères sont récupérés lors de la saisie. Vous devez jeter le retour chariot.

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

Votre 'c' n'est pas initialisé. Il peut avoir la valeur de 'EOF' pour commencer. – codaddict

+0

@codaddict - Vous avez raison. Je viens de copier le code de l'OP. Je le réparerai. – Starkey

+5

Que faire si l'utilisateur entre deux caractères avant d'appuyer sur Entrée? –

2

Travail à domicile?

Si oui, je ne donnerai pas une réponse complète/Vous avez probablement une entrée tamponnée - l'utilisateur doit entrer return avant que quelque chose ne soit retourné à votre programme. Vous devez savoir comment désactiver cela.

(cela dépend de l'environnement de votre programme - si vous pouviez donner plus de détails sur la plate-forme et la façon dont vous exécutez le programme, nous pourrions donner de meilleures réponses)

0

Pourquoi utilisez-vous pas scanf à la place?

Exemple:

char str[50]; 

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

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

return 0; 

Sorties

  
Enter input: xx 
Echo : xx 

scanf reference

+0

'scanf' fait regex? – leppie

+0

Vous devez également limiter l'entrée scanf à 49 caractères, sinon vous risquez de provoquer un dépassement de la mémoire tampon. –

1

prendre fgets par exemple:

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

et vous n'avez pas de problème avec get char/scanf (% c)/'\ n' et ainsi de suite.

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

Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire expliquant pourquoi et/ou comment ce code répond à la question améliore sa valeur à long terme. –

Questions connexes