Seite 1 von 1

Kleine Frage zu C-Programm

Verfasst: 23. Dez 2010, 17:07
von Blue.Shark
Hi,
ich sitz schon richtig lange an einem Problem, ich hoffe jemand kann mir helfen:

Ich Programmiere in C gerade ein programm, bei denen Befehle ausgegeben werden.
Dann benutze ich eine Sleep funktion, damit 3 Sekunden gewartet wird. Das klappt alles.

So, nach den 3 Sekunden wird eine eingabe erwartet.

Jetzt zum Problem: Wenn ich in den 3 Sekunden, wo das Programm nichts macht bzw "schläft" schon tippe, wird es zwar nicht angezeigt, was ich getippt habe, aber nach den 3 Sekunden dann schon.
Und das will ich vermeiden. Also dass wenn ich in den 3 Sekunden lang etwas eintippe, der Compiler das einfach ignoriert.

Wäre sehr dankbar wenn da jemand einen Lösungsansatz hat^^

Re: Kleine Frage zu C-Programm

Verfasst: 23. Dez 2010, 19:44
von Benu
Nach dem sleep einfach mal "fflush(stdin);" versuchen. Und danach am besten fgets() nutzen solange du nicht irgendwelche komplizierten formatstrings brauchst.

Re: Kleine Frage zu C-Programm

Verfasst: 23. Dez 2010, 23:09
von Blue.Shark
Das klappt so leider nicht :(

Re: Kleine Frage zu C-Programm

Verfasst: 23. Dez 2010, 23:16
von Benu
Bitte mal Source Code hier reinspoilern/per Pn an mich und die besagte Stelle kennzeichnen. Kann mir grad nicht vorstellen, dass das nicht geht.
Edit:
Doch klar kann ich mir vorstellen, dass das nicht geht. Werd mir das aber nochmal die Tage überlegen. Bis dahin wäre der Code ganz gut.

Re: Kleine Frage zu C-Programm

Verfasst: 25. Dez 2010, 10:35
von Blue.Shark
Ok, danke.

Weiß denn kein anderer ne Lösung?

Re: Kleine Frage zu C-Programm

Verfasst: 27. Dez 2010, 19:40
von Piru
Der Code würde uns da echt weiterhelfen, dir zu helfen ;)

Re: Kleine Frage zu C-Programm

Verfasst: 27. Dez 2010, 19:50
von Blue.Shark
Also der Quellcode sieht so aus:
SpoilerShow

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
void main()
{
	srand(time(0));
	char zus_buchstaben[100];
        char buchstaben [4];
        buchstaben[0]='s';
        buchstaben[1]='e';
        buchstaben[2]='d';
        buchstaben[3]='f';
        char eingabe[100];
	int k=0,zahl,pruefer,zaehler=0;

	printf("\n----------------------------------------------------------------\n");
	printf("Das Spiel kann nun anfangen. Wenn Sie bereit sind, druecken sie Enter\n");
	system("PAUSE");
	system("cls");
	while(true)
	{
		zahl=rand()%4;
		zus_buchstaben[k++]=buchstaben[zahl];
		zus_buchstaben[k]='\0';
		system("cls");
	---->	printf("Wort:\t%s\n",zus_buchstaben);
	---->	Sleep(3000);
	---->	system("cls");
	---->	printf("Eingabe:");
	---->	scanf("%s",eingabe);
		pruefer=strcmp(zus_buchstaben,eingabe);
		if(pruefer!=0)
		{
			printf("Sie haben falsch eingegeben.\n");
			printf("Ingesammt haben Sie %d Woerter richtig eingegeben\n",zaehler);
			break;
		}
		else
			zaehler++;
	}
	system("PAUSE");
	
}

Re: Kleine Frage zu C-Programm

Verfasst: 28. Dez 2010, 15:17
von Blue.Shark
Hat keiner eine Idee?

Ich hätte da noch eine kleine Frage:

In einer Datei kann ich ja mit folgendem Befehl schreiben:
fprintf(datei,"text");

Wenn ich das aber mache löscht der alles andere Weg.
Geht das irgendwie, dass ich z.b. "Hallo" in die 4.te Zeile schreiben kann?
(Der Rest soll unverändert bleiben)

Re: Kleine Frage zu C-Programm

Verfasst: 28. Dez 2010, 18:08
von Benu
Also die Frage zum Sleep Problem kann ich noch verstehen. Das ist kompliziert und wahrscheinlich nicht lösbar. Warum sollte es auch^^

Aber die Frage mit dem File Handle kann man sich zehnmal schneller selbst beantworten, wenn man etwas ehrgeiz an den Tag legt:
http://cplusplus.com/reference/clibrary/cstdio/fseek/
http://cplusplus.com/reference/clibrary/cstdio/fputs/
oder einfach mal fopen mit "a+" versuchen.