tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
940
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von BadPhantom
    BadPhantom BadPhantom ist offline Mitglied Bronze
    Registriert seit
    Nov 2004
    Beiträge
    25
    VS .NET 2003
    Shell Anwendung

    Hallo zusammen,

    ich möchte die Einstellungen eines DB-Programms in einer Datei speichern.
    Dazu verwende ich folgende Funktion, die beim ausführen einen ZUgriffsfehler verursacht.
    Ich hoffe, Ihr könnt mir helfen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
       int save_settings()
       {
        char name[200];
        char over;
        CLS;
        printf("Speichern\n==========\n");
        printf("Unter welchem namen speichern :  ");
        scanf("%s", &name);
       
        if(fopen(name, "r")!=NULL)
        {
            CLS;
            printf("\nDatei '%s' bereits vorhanden! Ueberschreiben? (j/n) ", name);
            over=tolower(getchar());getchar();
            if (over=='n')
            {
                CLS;
                printf("\nSpeichervorgang abgebrochen!.. [RETURN]");
                getchar();
                return 0;
            }
            // CLS;
            // printf("\nDaten nicht gespeichert! ..  [RETURN] ");
            // getchar();
            
        }
        fclose(fz);
        
        fopen(name,"w");
        fwrite(server, sizeof(char), strlen(server), fz);
        fwrite(user, sizeof(char), strlen(user), fz);
        fwrite(pass, sizeof(char), strlen(pass), fz);
        fwrite(db, sizeof(char), strlen(db), fz);
        fclose(fz);
        
        return 1;
       }

    Danke schonmal
     

  2. #2
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Wo genau tritt den der Zugriffsfehler auf?
    Hast du es schonmal Debugt(wird das so geschrieben)?

    Außerdem lass mal bai:
    Code :
    1
    
    scanf("%s", &name);
    das & weg, da es sich bei der Zielvariable um ein Array handelt ist das nicht nötig. Ob es daran liegt weiss ich aber nicht.


    mfg
    umbrasaxum
     

  3. #3
    Avatar von BadPhantom
    BadPhantom BadPhantom ist offline Mitglied Bronze
    Registriert seit
    Nov 2004
    Beiträge
    25
    Danke für die antwort.

    Also am '&' in scanf sollte es nicht liegen, das hat bei mir immer schon funktioniert.

    Ich habe es jetzt mal nach Deinem Vorschlag versucht, es funktioniert aber trotzdem nicht.

    Der Fehler müsste irgendwo beim FILE *fz Zeiger liegen.
    Nachdem ich den fz auf fopen(...) gesetzt habe, bekomme ich jetzt keine Fehlermeldung mehr, wenn ich in eine bereits vorhanden Datei schreiben will. Ein neuer Dateiname ruft aber den gleichen Fehler hervor.
    Auslesen kann ich dann aber auch nichts (aber ohne Fehlermeldung).Vielleicht ist aber auch noch ein Fehler in der load function.

    Hier mein jetziger Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
      int save_settings()
      {
        char name[200];
        char over;
        CLS;
        textcolor(green);
        printf("Speichern\n");
        textcolor(white);
        printf("==========\n"); 
        printf("Unter welchem namen speichern :  ");
        scanf("%s", &name);
      
        if((fz=fopen(name, "r"))!=NULL)
        {
            CLS;
            printf("\nDatei '%s' bereits vorhanden! Ueberschreiben? (j/n) ", name);
            over=tolower(getchar());getchar();
            if (over=='n')
            {
                CLS;
                textcolor(red);
                printf("\nSpeichervorgang abgebrochen!.. [RETURN]");
                textcolor(white);
                getchar();
                return 0;
            }
            CLS;
            printf("\nDaten nicht gespeichert! ..  [RETURN] ");
                getchar();
            
        }
        fclose(fz);
        
        fz=fopen(name,"w");
        fwrite(server, sizeof(char), strlen(server), fz);
        fwrite(user, sizeof(char), strlen(user), fz);
        fwrite(pass, sizeof(char), strlen(pass), fz);
        fwrite(db, sizeof(char), strlen(db), fz);
        fclose(fz);
        
        return 1;
      }

    P.S.: Wenn der Debug-Modus noch andere Vorteile hat, als mir anzuzeigen das etwas nicht stimmt, wäre ich dankbar wenn mir diesen jemand mitteilt.
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Debug Modus hin oder her, meistens reicht es wenn du dir nochma genau überlegst was du eigentlich tust - vor allem in dem Fall wenn die Datei noch nicht existiert:

    Code :
    1
    2
    3
    
    fz = fopen( name, "r"); /* => Fehler, Datei existiert nicht!   fz wird auf NULL gesetzt */
     
    fclose( fz ); /* Versuch eine Datei zu schließen die nicht offen ist, wobei fz auf NULL zeigt ==> Speicherzugriffsfehler. */

    Is wohl besser wenn du so verfährst:

    Code :
    1
    2
    3
    4
    
    if ((fz = fopen( name, "r")) != NULL) {
     /* blah */
    fclose( fz );
    }
    Geändert von deepthroat (14.06.05 um 15:02 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von BadPhantom
    BadPhantom BadPhantom ist offline Mitglied Bronze
    Registriert seit
    Nov 2004
    Beiträge
    25
    oha,

    Vielen Dank. Der Gedankengang hat mir gefehlt.

     

Ähnliche Themen

  1. fopen problem
    Von Marco-P im Forum PHP
    Antworten: 9
    Letzter Beitrag: 12.07.08, 04:58
  2. fopen Problem
    Von spikaner im Forum PHP
    Antworten: 2
    Letzter Beitrag: 29.04.07, 16:56
  3. Problem mit fopen()
    Von maltor im Forum PHP
    Antworten: 7
    Letzter Beitrag: 08.12.04, 19:58
  4. fopen Problem
    Von BomberJack im Forum PHP
    Antworten: 5
    Letzter Beitrag: 28.01.04, 08:06
  5. fopen - Problem
    Von ultrakollega im Forum PHP
    Antworten: 5
    Letzter Beitrag: 31.10.03, 12:21