Datei öffnen mittel fopen !



  • Hallo, ich habe folgendes Problem, und würde mich freuen, wenn man mir dabei helfen könnte:

    Meine Aufgabe ist es, eine Adressverwaltung mit den DAten Nachname, Vorname... zu schreiben. Diese Daten lege ich in einer Struktur ab. Alle eingegebenen Adressen sollen später auf einer DAtei auf der Festplatte abgespeicher werden. Auf diese Datei soll dann widerum zugegriffen werden können. Das Abspeichern auf die Festplatte hat bei mir ohne Fehler funktioniert. Mein Problem ist es, die Datei wieder zum Lesen(z.B. um eine Adresse zu suchen) zu öffnen. Im folgenden liefere ich den entsprechenden Code.

    // Adresse speichern

    int adresseSp(struct ListEl **list,char datei[20])
    {
    FILE *fp;

    fp = fopen(datei, "a");

    if((fp = fopen(datei, "a")) == NULL)
    {
    printf("Fehler beim Erzeugen der Datei!");
    return 0;
    }

    if (*list == NULL)
    printf("Keine Adressen zum Abspeichern vorhanden!\n\n");

    else
    {

    fprintf(fp, "%s",((*list)->nachn));
    fprintf(fp, "\n");
    fprintf(fp, "%s",((*list)->vorn));
    fprintf(fp, "\n");
    fprintf(fp, "%s",((*list)->strasse));
    fprintf(fp, "\n");
    fprintf(fp, "%s",((*list)->postl));
    fprintf(fp, "\n");
    fprintf(fp, "%s",((*list)->ort));
    fprintf(fp, "\n");
    fprintf(fp, "%s",((*list)->feld));
    fprintf(fp, "\n");
    fprintf(fp, "\n");

    fclose(fp);
    }

    if(((*list)->next) != NULL)
    {return (adresseSp((&((*list)->next)),datei));
    }
    }

    // Datei öffnen (Funktioniert nicht)

    int adresseEin(struct ListEl **list,char datei[20])
    {
    FILE *fp;

    fp=fopen(datei, "r");
    if((fp = fopen(datei, "r")) == NULL)

    {
    printf("Fehler beim Oeffnen der Datei!\n\n");
    }

    else
    { //fgets(((*list)->nachn), x,fp);
    fscanf(fp,"%s",&((*list)->nachn));

    fclose(fp);
    }

    if(((*list)->next) != NULL)
    {
    return (adresseSp((&((*list)->next)),datei));
    }

    }

    Diese Funktionen werden dann in der main() Funktion folgendermaßen aufgerufen :

    // Adresse speichern

    printf(" Bitte geben Sie den Dateinamen an: ");
    scanf("%s", &datei);
    adresseSp(&first, datei);

    // Datei öffnen

    printf("Bitte geben Sie den Dateinamen an: ");
    scanf("%s", &datei);
    adresseEin(&first, datei);

    Warte auf Tipps , Danke schön !



  • Falsches Forum. Kann irgendein Mod den Beitrag mal ins C-Forum verschieben...
    PS: WAS funktioniert denn nicht?



  • Sorry, habe falsches Forum erwischt. HAbe meinen Eintrag schon zu ANSI C geschrieben.

    Das Problem ist, dass die Text-Datei auf der Festplatte nich geöffnet wird.

    Normalerweise sollte sie mittels

    FILE *fp;
    fopen(fp, "r");

    zum Lesen geöffnet werden !



  • sedo24 schrieb:

    Sorry, habe falsches Forum erwischt. HAbe meinen Eintrag schon zu ANSI C geschrieben.

    Das Problem ist, dass die Text-Datei auf der Festplatte nich geöffnet wird.

    Normalerweise sollte sie mittels

    FILE *fp;
    fopen(fp, "r");

    zum Lesen geöffnet werden !

    Nein. Der 1. Parameter ist der Dateiname und der FILE* wird zurückgegeben:
    http://www.cplusplus.com/ref/cstdio/fopen.html



  • Dieser Thread wurde von Moderator/in AndreasW aus dem Forum C# und .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply