C Code funktioniert nicht?


23.08.2022, 15:04

Hier das Ergebnis.

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Rein technisch gesehen, macht das Programm genau das, was du sagst, dass es machen soll:

  1. lese double ein
  2. lese char ein

Deine Eingabe (stdin) hat vor dem ersten scanf wahrscheinlich so ausgesehen:

"6.9\n"
 ^^^ ------ double (6.9)
    ^^ ---- char (Zeilenumbruch)

Im input-buffer liegt also die Zahl und ein Zeilenumbruch. Mit dem scanf hast du nur die Zahl "weggelesen", es ist also immer noch der Zeilenumbruch (char) in stdin und der wird mit dem nächsten Aufruf dann eingelesen.

Um das zu lösen, könntest du einfach noch ein "\n" im scanf hinter das machen, was du einlesen willst oder du liest dannach einfach so lange weiter, bis du es gefunden hast (was ich machen würde).

Könnte also so aussehen:

int c; // Variable um den Rest "wegzulesen"

printf("Wert für Temperatur: ");
scanf("%lf", &temp);
while ((c = getchar()) != '\n' && c != EOF);

printf("[C]elsius oder [F]ahrenheit: ");
scanf("%c", &einheit);
while ((c = getchar()) != '\n' && c != EOF);

printf("Einheit: %c", einheit);

die Überprüfung von EOF (end of file) ist, dass es keine Endlosschleife wird, falls es ein anderes Trennzeichen gibt.

Und wenn du es jetzt richtig ordentlich machen wolltest, könntest du die while-Schleife noch in eine Funktion packen, dass du das nicht immer kopieren musst :D

Werhilftweiter2 
Fragesteller
 23.08.2022, 16:29

Vielen Dank, hat funktioniert.

0