Datensegmente - Dateisätze aus der Datei auslesen...



  • Wenn ich jetzt was in die .txt Datei reinschreibe, kommt ein Speicherror, wurde geschlossen wegen Fehler in der Anwendung

    int count = 0;
    
    	struct data_log {
    
    	int id;
    	char user_name[100];
        int pass_word;    
    
    	};
    
    	struct data_log dialog[100];
    
    FILE *db;
    
    if (db = fopen("usr_data.txt", "r")) {
    //
    
    while (!feof(db)) 
    { 
    
    fscanf(db,"%d %s %i", 
    dialog[count].id,dialog[count].user_name, 
    dialog[count].pass_word); 
    
    count++; 
    } 
    
    printf("\nID: %d", dialog[0].id);
    printf("\nUsername: %s", dialog[0].user_name);
    printf("\nPassword: %i", dialog[0].pass_word);
    
    printf("\nID: %d", dialog[1].id);
    printf("\nUsername: %s", dialog[1].user_name);
    printf("\nPassword: %i\n", dialog[1].pass_word);
    
    ///
    } else {
    printf("\n\nno\n");
    }
    
    fclose(db);
    

    In der usr_data.txt

    1 Rene1 123451
    2 Rene2 123452
    

    // Edit

    Er hat was gegen fscanf, ich glob es hängt an den [] bei id...



  • Spielgrips schrieb:

    Wenn ich jetzt was in die .txt Datei reinschreibe, kommt ein Speicherror, wurde geschlossen wegen Fehler in der Anwendung

    int count = 0;
    
    	struct data_log {
        
    	int id;
    	char user_name[100];
        int pass_word;    
    
    	};
    
    	struct data_log dialog[100];
    
    FILE *db;
    
    if (db = fopen("usr_data.txt", "r")) {
    //
    
    while (!feof(db)) 
    { 
    
    fscanf(db,"%d %s %i", 
    dialog[count].id,dialog[count].user_name, 
    dialog[count].pass_word); 
    
    count++; 
    } 
    
    printf("\nID: %d", dialog[0].id);
    printf("\nUsername: %s", dialog[0].user_name);
    printf("\nPassword: %i", dialog[0].pass_word);
    
    printf("\nID: %d", dialog[1].id);
    printf("\nUsername: %s", dialog[1].user_name);
    printf("\nPassword: %i\n", dialog[1].pass_word);
    
    ///
    } else {
    printf("\n\nno\n");
    }
    
    fclose(db);
    

    In der usr_data.txt

    1 Rene1 123451
    2 Rene2 123452
    

    // Edit

    Er hat was gegen fscanf, ich glob es hängt an den [] bei id...

    vielleicht weil du die Datei im "r"ead-Modus öffnest.



  • eigentlich geht das mit jeden Modus, er ließt nur ein "readen" und w ist fast das gleiche, nur das er lesen und schreiben kann und fscanf muss ja nur lesen..



  • Spielgrips schrieb:

    eigentlich geht das mit jeden Modus, er ließt nur ein "readen" und w ist fast das gleiche, nur das er lesen und schreiben kann und fscanf muss ja nur lesen..

    Kansst du dein Problem etw. genauer beschreiben?



  • Spielgrips schrieb:

    eigentlich geht das mit jeden Modus, er ließt nur ein "readen" und w ist fast das gleiche, nur das er lesen und schreiben kann und fscanf muss ja nur lesen..

    r = read = lesen = LESEN
    w = write = schreiben = SCHREIBEN

    mit "r" öffnen und dann mit printf zu schreiben zu versuchen geht schief, ist halt so...

    Nach der Einlese schleife musst Du schliessen und dann erneut öffnen, aber dann halt zum schreiben!



  • Hallo,

    fscanf erwartet als Argumente Zeiger auf Variablen:

    fscanf(db,"%d %s %i", &dialog[count].id, dialog[count].user_name, &dialog[count].pass_word);
    

    MfG



  • @NobbZ
    Aha, ich wusste gar nicht, dass für die Ausgabe am Bildschirm (printf()) eine Datei im Schreibemodus öffnen muss 😕 Ist mir neu. Also bei mir hat das bisher immer ohne Datei hingehauen, dass ich mit printf() einfach den Bildschirm was ausgeben konnte. :p



  • AJ schrieb:

    @NobbZ
    Aha, ich wusste gar nicht, dass für die Ausgabe am Bildschirm (printf()) eine Datei im Schreibemodus öffnen muss 😕 Ist mir neu. Also bei mir hat das bisher immer ohne Datei hingehauen, dass ich mit printf() einfach den Bildschirm was ausgeben konnte. :p

    printf schreibt ja standardmäßig in das stdout = fprintf(stdout, "...");
    stdout gehört zu den filedeskriptoren, die bereits geöffnet sind.
    printf könnte also auch als Makro definiert sein wie getchar();



  • Wie soll jetzt das nun aussehen,

    Eins was mich irgendwie wundert das der Compiler und Linker nix sagt und dann wenn man es ausführt hat man die Bescherung...

    @Nobbz

    Wenn ich mich recht erinnere sind die printfs außerhalb von der while, nicht irritiert fühlen 😉 !

    ich glob es hängt an die & in fscanf weil eins keins hat, ich probiere mal aus Freunde ;)!



  • Okay es geht 😉 , danke an allle 😃 👍 👍 !!



  • Ich geb mich geschlagen... Ich hab nur:

    Wenn ich jetzt was in die .txt Datei reinschreibe, kommt ein Speicherror, wurde geschlossen wegen Fehler in der Anwendung

    gelesen und halt das open im read modus,weiter hab ich dann gar nicht geguckt...



  • @ghost
    😉



  • AJ schrieb:

    @ghost
    😉

    Sorry, hatte die Ironie in deinem Beitrag nicht ganz mitbekommen. 😃

    Hey: was sind das denn für Hyroglyphen: λ ω∫

    irgendwie cool: Hλlf Life



  • @ghost

    Sorry, hatte die Ironie in deinem Beitrag nicht ganz mitbekommen.

    Macht nichts :).

    ...Hyroglyphen...

    Lass es dir von MasterUser erklären 😉

    Aus Mathematik solltest du wenigstens ein paar der Zeichen kennen.

    Ich frag mich grad wie man das Hλlf aussprechen soll, da das λ von der Lautschrift her, soviel ich weiß, ein L ist, also Hllf 😃



  • Jetzt hast du meine Ironie nicht ganz mitbekommen. 😉



  • Hätte ja sein können, dass du das wirklich nicht weißt. Bist ein überzeugender Schauspieler, zumindest was das Schreiben angeht ;):D


Anmelden zum Antworten