Problem mit "scanf"

Kharim

Grünschnabel
Hi Leutz,

ich will/soll ein Prog schreiben das Zahlen sortiert.
Meine main-Funktion sieht wie folgt aus:
Code:
int main(void)
{

  do
  {
           for(i=0;i<25;i++)
           {
              feld[i]=0;
           }
  printf("\n\nEingabe der Werte(max.25)\n");
  printf("\nSollen die Elemente von der Tastatur eingegeben werden (j/n) ? ");
  scanf("%c",&ch);
  ch=toupper(ch);

  switch(ch)
  	{
  	case 74: // J
  		 EingabeTaste();
  		 Ausgabe();
  		 Sort();
  		 Ausgabe();
  		 break;
  	case 78: //N
  		 EingabeAuto();
  		 Ausgabe();
  		 Sort();
  		 Ausgabe();
  		 break;
  	}
  printf("\nFehlerhafte Wahl der Eingabemoeglichkeit oder Programm beendet. (N)eustart?");
  scanf("%c",&ch);
  ch=toupper(ch);
  printf("\n%c",ch);
  }while(ch!='N');
}
Das Programm an sich funktioniert.
Mein Problem ist jetzt folgendes:

Wenn das Programm beendet ist, kommt die entsprechende Meldung und es soll mit dem fett gedruckten scanf eine Nutzereingabe erfolgen ob er das Programm neustarten will.
Genau das passiert aber nicht! Beim Ausführen des Programmes wird das scanf total übergangen/ignoriert, als wenn es überhaupt nicht im Quelltext stehen würde.

Ich dachte ja erst ich hätte es ohne zu wollen in meinem C-Prog "ausgeklammert" oder so. Daher habe ich den Quelltext in ein anderes Prog kopiert, bzw mit diesem die Code-Datei geöffnet -> gleiches Ergebnis.

Daher vermute ich das es am Quelltext selbst liegt....aber woran

Ich hoffe ihr könnt mir helfen!
Grüße, Kharim
 
Hi.

Wenn das C Code ist, dann fehlt in deiner main Methode eine return Anweisung. (Bei erfolgreicher Ausführung sollte man 0 zurückgeben)

Das Problem ist vermutlich das da noch Whitespace Zeichen im Eingabepuffer stehen und diese liest du mit dem scanf natürlich erstmal aus.

Probier mal
Code:
scanf(" %c", &ch);
aus. (da ist eine Leerzeichen vor dem Prozentzeichen).

Dann brauchst du übrigens nicht die Buchstaben in Zahlen in der switch Anweisung zu übersetzen:
Code:
switch (ch) {
case 'j':
case 'J':
  ....
  break;
case ... /* usw. */
}

PS: Und verwende doch bitte das nächste Mal die Code Tags wenn du deinen Code einfügst.

Gruß
 
Zurück