PDA

Vollständige Version anzeigen : Datei öffenen mit fopen(); Hilfe !


ThorstenSt
04.02.2004, 17:30
Hallo, brauche Hilfe. Ich möchte gerne eine Datei mit den Name help.txt. ausgeben lassen.

Dazu folgender Code:



#include stdio.h
#include conio.h
#include math.h

int help(void);

int help()
{
FILE *datei;

datei=fopen("help.txt","r");

if(NULL == datei)
{
printf("\nDie Datei \"Help.txt\" konnte nicht gefunden werden! ");
}
getch();
main();
}


int main(void)
{
int x, y, p, i, s, su, b, m;
float g;

clrscr();

printf("\t\t ****** Rechenprogramm - Thorsten Steinberg 09.02.2004 ****** ");
printf("\n\n Rechenartmenue: ");

printf("\n \t Taste 1 = Addieren ");
printf("\n \t Taste 2 = Subtrahieren ");
printf("\n \t Taste 3 = Multiplizieren ");
printf("\n \t Taste 4 = Dividieren ");
printf("\n \t Taste 5 = Ueber dieses Programm ");
printf("\n \t Taste 6 = Hilfe Datei ");
printf("\n \t Taste 0 = Programm beenden ");

scanf("%i",&m);

if (m==1)
{
addieren();
}

if (m==2)
{
subtrahieren();

}

if (m==3)
{
multiplizieren();

}

if (m==4)
{
dividieren();

}

if (m==5)
{
printf("Ueber dieses Programm");
printf("\nGeben Sie \"Help\" fuer die Hilfe ein ! ");
getch();
main();
}

if (m==0)
{
return 0;
}

if (m==6)
{
help();
}

if (m<0 || m>6)
{
printf("\nBitte geben Sie eine gueltige Tasteneingabe ein !");
getch();
main();
}

}





Bei der Eingabe der Zahl 6 wird help(); ausgeführt. Dies funktioniert auch, nun wird aber die Datei "help.txt" nicht geöffnet. Woran kann das liegen ??
Wenn ich den Namen in Beispielsweise hel.txt ändere, sagt er die Datei ist nicht vorhanden. Bei help.txt passiert nichts.
Die Datei help.txt ist bereits im Programm Ordner abgespeichert.

Musste bei #include die eckigen klammern weg lassen. Habe sie also nicht vergessen !

Auf eine Antwort würde ich mich sehr freuen.

Mit freindlichem Gruß
Thorsten Steinberg

Joachim Hofmann
04.02.2004, 22:08
Was soll eigentlich passieren? Ich kann keinen Code erkennen, der einen Dateiinhalt ausgibt.
1) was tut eigentlich getch()? Erwartet eine Zeicheneingabe?
2) Du rufst main(); aus help(); auf, das kann nicht sinnvoll sein, da nach Aufruf einer Funktion aus main ja automatisch zurückgesprungen wird.

flori
05.02.2004, 08:36
Hallo,

ist das denn überhaupt richtig rum?

if(NULL == datei)

Ich kann mich jetzt nicht direkt daran erinnern wie es bei C oder C++ zu verwenden ist, aber bei den Sprachen, die ich zur Zeit verwende, schreibe ich das immer so:

if(datei == NULL) bzw. if(datei=="")

Vielleicht habe ich mir auch nur die andere Schreibweise angewöhnt, weil es meiner Meinung nach übersichtlicher ist. Lasse mich da gerne eines besseren belehren.

Das was Joachim geschrieben hat, kann ich auch nicht finden. Wo wird dem Programm gesagt, dass es die Datei anzeigen soll? Es wird die Datei nur zum Lesen geöffnet. Eine Ausgabe am Bildschirm muss noch programmiert werden.

In Zukunft bitte auch noch dazuschreiben welche Programmiersprache (C oder C++) verwendet wird, damit noch schneller geholfen werden kann.

@Joachim: Mit getch() wird eine Tastatureingabe abgefragt.

spk^sIckbOy
02.04.2004, 07:55
1) Da deine help Funktion vor der main() funktion steht brauchst du erstmal keinen Prototypen der Helpfunktion.

2) Für mich hört sich das jetzt so an als ob du erwartest das die Datei richtig geöffnet wird?!
mit fopen wird die Datei aber nur intern "geöffnet" damit du mit fscanf oder anderen Methoden, Daten aus der Datei holen kannst oder schreiben kannst.

3) lass das main() in der help Funktion weg das ist blödsin!

FW
02.04.2004, 13:33
@ThostenSt: Du solltest Dich zunächst einmal intensiver mit C beschäftigen!
Ich wüsste gar nicht, wo ich anfangen sollte, Dir was zu erklären...

@flori: Die Gleichheit ist eine sg. Äquivalenz-Relation, d. h. A=B ist gleichbedeutend mit B=A, dies gilt natürlich auch in allen Programmiersprachen!

Guest
05.07.2006, 13:02
Wieso.. nagut, in den meisten prozeduralen Programmiersprachen führt dies zum Stack Overflow,
aber wäre in funktionellen Sprachen wie Scheme und Lisp die einzige Möglichkeit eine Schleife zu realisieren.
@Thorsten: Vielleicht willst Du ja Dir diese Sprachen später mal angucken.

Und ich finde es ist eine Leistung zu erkennen, dass eine Schleife als Rekursion abgebildet werden kann.

Wenn Ihr denn Thorsten empfehlt main() wegzulassen, erklärt doch auch mit wie die Rekursion in eine Iteration übersetzt wird. Sonst funktioniert sein Programm nicht mehr...

Grüße,

Jens

rayek
06.07.2006, 14:32
:eek: ui, ui, ui. ist ja asbachuralt der beitrag.. na gut... ;)

Und ich finde es ist eine Leistung zu erkennen, dass eine Schleife als Rekursion abgebildet werden kann.
ääh, will jetz nich überheblich klingen, und , nein, ich habe auch nicht informatik studiert, dennoch muss ich mal fragen, warum das ne leistung ist?
ich hab mir auch schon öfters von info/mathe-studenten angehört "Waas? Du weisst was Rekursion ist? Sauber "...ehm, wenn man sich lang und VOR ALLEM intensiv genug mit mathe oder informatik beschäftigt, kommt man da IMHO GAR NICHT drumherum, da bringt einen der gesunde menschenverstand drauf...
hm, vllt wunder ich mich auch nur sinnfrei über derlei aussagen....
is ja auch ned bös´ gemeint... ;) :) ;)