Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420

    [C] stranezza nella scrittura di file

    Salve a tutti, non capisco perchè cercando di salvare su un file (sia con fwrite sia con fprintf) mi salva sembre un record in piu alla fine (l'ultimo viene ripetuto due volte).
    L'unico accorgimento che sono riuscito ad adottare e quello che presento qui sotto. ("" equivale a un campo vuoto)..
    Capita anche a voi?


    struct elemento {

    int telefono;
    char nome[20];
    struct elemento *destra;
    struct elemento *sinistra;
    };

    typedef struct elemento ele;

    if(inizio)
    {
    fp=fopen("agenda.txt","w");
    ric=inizio;
    do{
    contatore--;
    temp.telefono=ric->telefono;
    strcpy(temp.nome,ric->nome);
    printf("\nnome %s tel %d\n",temp.nome, temp.telefono);
    if((f=strcmp(temp.nome,""))) n=fwrite(&temp,sizeof(ele),1,fp);
    ric=ric->destra;
    }while(ric);

    temp.telefono=0;
    strcpy(temp.nome,"");
    n=fwrite(&temp,sizeof(ele),1,fp);

    fclose(fp);


    fclose(fp);
    the sALIEN

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    Qualcuno sa come implementarlo diversamente?
    the sALIEN

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    Ciao, grazie 1000, ora provo a vedere che si può fare
    the sALIEN

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    Ciao kentaromiura, ho letto quello che hai scritto nell'altro forum ma non fa lo stesso come hai indicato (almeno io non ci sono riuscito ).
    ECCO COSA HO FATTO:

    *salvataggio del file*/
    if(inizio)
    {
    fp=fopen("agenda.txt","w");
    ric=inizio;
    do{
    temp.telefono=ric->telefono;
    strcpy(temp.nome,ric->nome);
    printf("\nnome %s tel %d\n",temp.nome, temp.telefono);
    if( feof(fp) ) break;

    if((f=strcmp(temp.nome,""))) n=fwrite(&temp,sizeof(ele),1,fp);
    ric=ric->destra;
    }while(ric);



    fclose(fp);
    the sALIEN

  6. #6
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Prova a controllare che fwrite() == 1
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    Ciao infinitejustice, non capisco dove...
    Se lo intendi cosi:

    /*salvataggio del file*/
    if(inizio)
    {
    fp=fopen("agenda.txt","w");
    ric=inizio;
    do{
    contatore--;
    temp.telefono=ric->telefono;
    strcpy(temp.nome,ric->nome);
    printf("\nnome %s tel %d\n",temp.nome, temp.telefono);
    if((f=strcmp(temp.nome,""))) n=fwrite(&temp,sizeof(ele),1,fp);
    ric=ric->destra;
    if(n==1)break;
    }while(ric);

    non funziona lo stesso





    fclose(fp);
    }
    the sALIEN

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    420
    Ho provato anche controllando se fwrite == 1 nella while ma non funge lo stesso
    the sALIEN

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.