WinFuture-Forum.de: C - Printf & Getchar() - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

C - Printf & Getchar()


#1 Mitglied ist offline   Noaki 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 14. September 05
  • Reputation: 0

geschrieben 16. September 2006 - 15:49

Warum wird beim Ausführen des Programms, die letzte printf Zeile nicht mehr ausgegeben?

/* Scanf */

#include <stdio.h>

int main(void)
{
	int i; /* ein ganzzahliger Datentyp */
	
	printf("Bitte geben Sie eine Zahl ein: ");
	scanf("%d",&i);	  /* Wartet auf die Eingabe */
	
	printf("Die Zahl, die Sie eingegeben haben, war %d\n", i);
	 
	getchar();
	return 0;
}


Trage ich 2 mal 'getchar()' ein, wird es mit ausgegeben (dos-box schliesst nicht sofort). Meine Vermutung ist, dass 'getchar()' das vorrausgehende 'printf' schon als Eingabe interpretiert. Kann ich das Programm auch ohne 2maliges benutzen von 'getchar()' beim Ausführen anzeigen lassen? Es wäre nett, wenn mir jemand das Problem genauer erklären könnte.
0

Anzeige



#2 _deen_

  • Gruppe: Gäste

geschrieben 16. September 2006 - 22:36

Wenn du
getchar();

durch
getch();

ersetzt und
#include<conio.h>
einbindest, sollte es funktionieren, warum es aber mit getchar nicht geht, kann ich nicht sagen. :P
0

#3 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 17. September 2006 - 07:38

scanf sucht nach einer ganzen zahl im eingabestream, wenn du den aber mit enter terminierst, wird es nur bis zum enter lesen und den rest im 'eingabebuffer' lassen. liest du dann ein zeichen und erwartest, dass kein zeichen im buffer ist (um damit das 'dos-fenster' anzuhalten) klappt das natürlich nicht.

warum startest du dein programm nicht in einer konsole?

C programmieren macht aber ohnehin erst in einer unix-umgebung spass :P.

grüsse,
mo
ps: was klappen könnte: scanf("%d\n",&i); .. programmier aber sehr selten C, keine garantie.
I'm mó. mo's good twin.
0

#4 Mitglied ist offline   Noaki 

  • Gruppe: aktive Mitglieder
  • Beiträge: 25
  • Beigetreten: 14. September 05
  • Reputation: 0

geschrieben 17. September 2006 - 19:00

Zitat

was klappen könnte: scanf("%d\n",&i);


Nein, das klappt nicht =)

Es klappt mit einem

	scanf("%d",&i);
	fflush(stdin);


allerdings soll 'fflush(stdin)' nicht auf allen Betriebssystemen funktionieren und ich möchte C eigentlich möglichst plattform unabhängig lernen und das muss ja nicht an einem scanf scheitern :D

Mir ist allerdings noch nicht ganz klar, wie das mit dem Puffer funktioniert ;>

Läuft das ganz so ab?

|--Eingabe (z.b 2)--|  --> |--bestätigung durch enter--| --> |--einlesen durch scanf--| --> |--speicherung im puffer--| --> |--weiterleitung auf Variable 'i'--|  --> |--'i' beträgt '2' und '\n'--| --> |--Anzeige von '2' und '\n' durch printf--| --> |--getchar() interpretiert, das im puffer enthaltene '\n' als drücken der enter-taste--| --> |--Beendigung des Programms--|

0

#5 Mitglied ist offline   2cool 

geschrieben 18. September 2006 - 11:40

Beitrag anzeigenZitat (Noaki: 17.09.2006, 20:00)

Läuft das ganz so ab?



Eher in der Weise:

 --> |--Eingabe (z.b 2)--|
 --> |--bestätigung durch enter--|
 --> |--einlesen von '2' durch scanf ('\n' bleibt im Puffer)--|
 --> |--weiterleitung auf Variable 'i'--|
 --> |--'i' beträgt '2'--|
 --> |--Anzeige von '2' durch printf("%d\n", i))--|
 --> |--getchar() interpretiert, das bis jetzt im Puffer enthaltene '\n' als drücken der enter-taste--|
 --> |--Beendigung des Programms--|

Dieser Beitrag wurde von 2cool bearbeitet: 18. September 2006 - 11:42

greetz, 2cool

web: cmd-script
mail: [email protected]
0

#6 Mitglied ist offline   pix 

  • Gruppe: aktive Mitglieder
  • Beiträge: 58
  • Beigetreten: 13. November 05
  • Reputation: 0

geschrieben 20. September 2006 - 20:38

mach doch einfach nach jeder eingabe scanf ein getchar rein dann gehts oO weil sonst wie schon geschrieben er es im puffer behält.

Zitat

scanf("%d",&i); /* Wartet auf die Eingabe */
getchar();

Eingefügtes Bild
0

#7 _deen_

  • Gruppe: Gäste

geschrieben 25. September 2006 - 15:44

Argh, hab was überlesen...

Dieser Beitrag wurde von deen bearbeitet: 25. September 2006 - 15:44

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0