Variable inkrementieren



  • Mein Code:

    #include <stdio.h>
    
    int main() {
    	int zahl;
    	char eingabe;
    	zahl = 0;
    	while (1) {
    		printf("%i\n", zahl);
    		scanf("%s", &eingabe);
    		if (eingabe == 'w') {
    			zahl++;
    		} else if (eingabe == 's') {
    			zahl--;
    		} else {
    			printf("Ungueltige Eingabe!\n");
    		}
    	}
    
    }
    

    Eigentlich soll das Programm beim Drücken von "w" die Variable "zahl" um eins erhöhen, beim Drücken von "s" um eins dekrementieren. Leider funktioniert das nicht richtig, und ich verstehe nicht warum 😞

    Beispielhafter Programmablauf.
    - Drücken von "w" erhöht auf 1, weiteres drücken von "w" verändert nichts.
    - Drücken von "s" mehrmals liefert 0, -1, -257, -513, ...



  • %s ist für char*, Du willst %c.



  • Vielen Dank 🙂 Jetzt habe ich nur noch das Problem, dass nach jedem Drücken von "w" auch "Ungueltige Eingabe" erscheint. Wie kann ich das lösen?



  • Das kommt von der Entertaste.

    Das Zeichen dafür ist '\n'

    Da '\n' ein sogenanntes Whitespace ist, kannst du es mit einem Leerzeichen vor dem %c im Formatstring von scanf lösen.

    scanf(" %c", &eingabe);
           ^ Da kommt das Leerzeichen hin
    

Anmelden zum Antworten