Hi Leute,
folgendes Problem:
Schreibe für mein duales Studium Informationstechnik einen Programmierbeleg, der sich um das Thema Hangman drehen soll. Dabei gibt es verschiedene Anforderungen wie ein Log in ner Binärdatei und solche Späße. Da das aber insgesamt zu umfangreich ist und derzeit nicht gebraucht wird, würde ich benötigte Informationen rausgeben wenn wir sie brauchen
Wie schon im Titel angedeutet soll das hier eine Art Dauerauftrag sein, einfach um nicht jede Frage, die sich mir ergibt, in 20 verschiedene Posts zu packen, das nervt nur und wird unübersichtlich
Wer also bereit ist zu helfen und sich mit C ein wenig auskennt darf gerne abbonieren und auf dem Stand der Dinge bleiben, würde mich freuen
Nun aber zum eigentlichen Sachverhalt der mich derzeit beschäftigt...vorab erstmal der Code:
Die Funktionen:
Und die Main():
Ich bin noch am Anfang, also nicht wundern
Momentan ist das Ziel ein Wort aus einer .txt - Datei zufällig auszuwählen, also per Random anhand der Anzahl der Wörter in der Datei.
Was das Problem ist:
Wenn die Funktion WorteAnzahl durchgelaufen ist ist der Dateistream von fWort bei NULL. Somit wird der Befehl (siehe oben), der das Wort ausgibt bzw. sucht, gar nicht erst ausgeführt. Ich habe dazu schon mit einem Kollegen gesprochen, der meinte man könnte das durch CALL BY VALUE lösen (ein Schließen und Öffnen der Datei wäre auch möglich, aber sinnlos und nur als Notlösung zu betrachten, ist mir nämlich auch schon in den Sinn gekommen
).
Somit würde ich ja dann auch nicht mit den Speicherzellen arbeiten sondern nur mit dem Inhalt des entsprechenden Speichers.
Nun hab ich aber keinen Schimmer, wie ich ein FILE *datei in ein Value umwandeln soll o.O Geht das irgendwie mit get() set()? Oder muss ich da ganz anders rangehen?
Hoffe ihr könnt mir da helfen
LG Nero
P.S.:
Gearbeitet wird mit Visual Studio 2010 auf Arbeit oder 2012 bei mir zuhause. Daher ist das ein C++ - Compiler. Einige wenige C++ Funktionen dürfen wir nutzen, aber dazu mehr wenn es soweit ist.
folgendes Problem:
Schreibe für mein duales Studium Informationstechnik einen Programmierbeleg, der sich um das Thema Hangman drehen soll. Dabei gibt es verschiedene Anforderungen wie ein Log in ner Binärdatei und solche Späße. Da das aber insgesamt zu umfangreich ist und derzeit nicht gebraucht wird, würde ich benötigte Informationen rausgeben wenn wir sie brauchen

Wie schon im Titel angedeutet soll das hier eine Art Dauerauftrag sein, einfach um nicht jede Frage, die sich mir ergibt, in 20 verschiedene Posts zu packen, das nervt nur und wird unübersichtlich

Wer also bereit ist zu helfen und sich mit C ein wenig auskennt darf gerne abbonieren und auf dem Stand der Dinge bleiben, würde mich freuen

Nun aber zum eigentlichen Sachverhalt der mich derzeit beschäftigt...vorab erstmal der Code:
Die Funktionen:
Code:
#include "Deklarationen.h"
//Bestimmung der Anzahl von Wörtern (zeilenweise)
int WorteAnzahl(FILE *datei)
{
int i=0;
char puffer[81];
char *ret;
while((ret=fgets(puffer,80,datei))!=NULL)
{
i++;
}
return i;
}
//Anhand einer Zufallszahl Wort in Datei bestimmen
void Zufallswort(FILE *datei, int zufZahl)
{
int i=0;
char puffer[81];
char *ret;
while((ret=fgets(puffer,80,datei))!=NULL) //= "der Befehl" :P (Bedeutung siehe unten)
{
i++;
if(i==zufZahl)
{
puts(puffer);
return;
}
}
}
Und die Main():
Code:
#include "Deklarationen.h"
int main(void)
{
//--------------------------------------------------BEGINN---------------------------------------------------//
FILE *fWort;
fWort=fopen(woerter,"r");
if(fWort==NULL)
{
printf("Fehler beim Zugriff auf %s",woerter);
return 1;
}
//-----------------------------------------------Wort auswählen----------------------------------------------//
time_t t;
time(&t);
srand((unsigned int)t); //Zufallszahlen - Generator initialisieren
int anzWort;
int x=WorteAnzahl(fWort);
anzWort=(rand()%(x))+1; //Zufallszahl für Wort finden
Zufallswort(fWort,anzWort);
//----------------------------------------------------ENDE---------------------------------------------------//
if(!(fclose(fWort)));
else
printf("Fehler beim schließen der Datei %s!",fWort);
fflush(stdin);
getchar();
return 0;
}
Ich bin noch am Anfang, also nicht wundern

Was das Problem ist:
Wenn die Funktion WorteAnzahl durchgelaufen ist ist der Dateistream von fWort bei NULL. Somit wird der Befehl (siehe oben), der das Wort ausgibt bzw. sucht, gar nicht erst ausgeführt. Ich habe dazu schon mit einem Kollegen gesprochen, der meinte man könnte das durch CALL BY VALUE lösen (ein Schließen und Öffnen der Datei wäre auch möglich, aber sinnlos und nur als Notlösung zu betrachten, ist mir nämlich auch schon in den Sinn gekommen

Somit würde ich ja dann auch nicht mit den Speicherzellen arbeiten sondern nur mit dem Inhalt des entsprechenden Speichers.
Nun hab ich aber keinen Schimmer, wie ich ein FILE *datei in ein Value umwandeln soll o.O Geht das irgendwie mit get() set()? Oder muss ich da ganz anders rangehen?
Hoffe ihr könnt mir da helfen

LG Nero
P.S.:
Gearbeitet wird mit Visual Studio 2010 auf Arbeit oder 2012 bei mir zuhause. Daher ist das ein C++ - Compiler. Einige wenige C++ Funktionen dürfen wir nutzen, aber dazu mehr wenn es soweit ist.