Schleife läuft mehr als in C angegeben? Warum? [geschlossen]

8

Wenn ich die Zahl 5 eintrage, muss diese Schleife 5 mal laufen, aber sie läuft 6 mal. Was ist das Problem?

%Vor%     
Murali krishna 03.03.2016, 08:58
quelle

3 Antworten

23

Entfernen Sie das nachstehende Leerzeichen aus der% format-Zeichenfolge% co_de, die in der Schleife verwendet wird.

Es bewirkt, dass scanf () alle Leerzeichen löscht, nachdem ein scanf() ( int ) gelesen wurde, bis etwas gefunden wird, das kein Leerzeichen ist. Bei der fünften Iteration der Schleife liest %d scanf() und fährt fort, bis kein Leerzeichen mehr gefunden wird. Dies gibt die Illusion, dass man eine ganze Zahl mehr lesen muss.

Beim letzten Aufruf von int führt ein Nicht-Leerzeichen nach den Integer-Daten zum Ende des Lesevorgangs.

    
Peter 03.03.2016, 09:07
quelle
7

Entfernen Sie den Speicherplatz hier:

Dies:

%Vor%

sollte sein:

%Vor%     
Michael Walz 03.03.2016 09:03
quelle
0

Ich hatte auch ein ähnliches Problem. Um es perfekt zu machen, entfernen Sie bitte die Leerzeichen nach % d in der Schleife. Es sollte funktionieren. Könnte eine Eigenschaft von scanf sein.

%Vor%     
Anil Kumar 03.03.2016 09:04
quelle

Tags und Links