Wo ist der Unterschied in den Codes?
- 
					
					
					
					
 Hallo ihr Lieben, 
 ich habe folgende Aufgabe:
 "Lies mit scanf ein Wort, ein Zeichen und eine Fließkommazahl ein und gibt ihr die Inhalte mit printf wieder aus."Das ist Code 1: #include<stdio.h> int main() { char wort[20]; char c; double d; printf("Wort: "); scanf("%s", wort); printf("Zeichen: "); scanf("%c", &c); printf("Fliesskommazahl: "); scanf("%lf", &d); printf("Wort: %s\nZeichen: %c\nFliesskommazahl: %lf\n", wort, c, d); return 0; }Das ist Code 2: #include <stdio.h> int main(void) { char wort[30]; char c; float x; printf("Wort , Zeichen und Zahl eingeben: "); scanf("%s %c %f", wort, & c, & x); printf(" Eingegeben wurde: %s, %c, %f\n", wort, c, x); return 0; }Code 1 funzt NICHT, Code 2 schon. 
 Warum klappt der erste Code nicht?Vielen Dank für ejden Hinweis. Liebe Grüße 
 Hawaiihemd
 
- 
					
					
					
					
 @Hawaiihemd Code 2 funktioniert (so wie du wünscht), weil im Formatstring von sscanfvor dem %c ein Leerzeichen ist.Wenn du im Code 1 beim Zeichen ein " %c"(Leerzeichen vor dem % ) schreibst, geht der auch.Das Leerzeichen im Formatstring überliest Whitespace (Leerzeichen, Tabulatoren, Zeilenvorschub). 
 %s, %f, %d (und andere Intformate) machen das automatisch.
 %c nicht, du könntest ja das '\n' von der Enter-Taste lesen wollen.Im Code 1 kannst du für das Zeichen mal eine Ziffer nehmen, dann läuft das Programm weiter. 
 
- 
					
					
					
					
 @DirkB Okay, mit Leerzeichen geht es tatsächlich. Aber die letzte Zeile wird trotzdem nicht ausgegeben. printf("Wort: %s\nZeichen: %c\nFliesskommazahl: %lf\n", wort, c, d);Diese Zeile scheint er immer noch zu ignorieren... 
 
- 
					
					
					
					
 @Hawaiihemd Das kann auch an falschen Eingaben oder nicht aktuellem Programm (exe passt nicht zum Code) liegen.