2017-04-04 2 views
0

Mit ein bisschen Mühe, und bin verwirrt, warum das nicht funktioniert. Der Code nimmt die Eingabe und druckt die Eingabe ohne Kleinbuchstabenvokale.Devowelling eine Eingabe mit getchar() in C

#include <stdio.h> 
int main (void) { 
    int i=getchar(); 
     while (i != EOF) { 
      if(i!='a' && i!='e' && i!='i'&&i!='o' && i!='u') { 
       printf("%c", i); 
       i=getchar();  
      } 
     } 

} 
+3

Sieht so aus, als ob Ihr zweiter Aufruf von 'getchar()' außerhalb der 'if' Anweisung sein muss. – eatcrayons

+0

Fehlerberichte sollten drei Dinge haben. (1) Kleinste Codebeispiel mit dem Problem. Prüfen. (2) Was erwartest du zu passieren. Prüfen. (3) Was * tatsächlich * passiert. Vermisst. – paxdiablo

+0

Ich glaube, der Fachbegriff ist "disvowelling". –

Antwort

1

Überprüfen Sie Ihre if Aussage.

Wenn das Eingabezeichen nicht in {a, e, i, o, u} steht, dann drucken Sie das Zeichen und erhalten ein neues Zeichen. Aber Sie wollen wirklich jedes Mal einen neuen Charakter durch die Schleife bekommen. Da sich i nicht ändert, wenn es ein Vokal ist, läuft der Code für immer und erreicht nie EOF.

Die Lösung besteht darin, den Anruf nach getchar() zu verschieben, direkt nach der if Anweisung.