Fopen_s() fallisce in scrittura e append, errno 13

di il
20 risposte

20 Risposte - Pagina 2

  • Re: Fopen_s() fallisce in scrittura e append, errno 13

    Puoi provare ma io uso Visual Studio in varie versioni e non ho problemi.
  • Re: Fopen_s() fallisce in scrittura e append, errno 13

    Farò delle prove, grazie per l'aiuto!
  • Re: Fopen_s() fallisce in scrittura e append, errno 13

    Alla fine ci sono riuscito, l'errore stava nel fatto di non aver chiuso il file dopo aver usato la fopen() nella condizione della if.

    sbagliato:
    if (fopen_s(&file, "./addressBook.list", "rb"))
        {
            fopen_s(&file, "./addressBook.list", "wb");
            fclose(file);
            return;
        };
    corretto:
    if (fopen_s(&file, "./addressBook.list", "rb"))
        {
            fopen_s(&file, "./addressBook.list", "wb");
            fclose(file);
            return;
        }
        fclose(file);;
  • Re: Fopen_s() fallisce in scrittura e append, errno 13

    Guarda che nel primo post avevi scritto
    
    void LoadAddressBook()
    {
        contactStructType* curContact = (contactStructType*)malloc(sizeof(contactStructType));
        memset(curContact, 0, sizeof(contactStructType));
    
        char name[30];
        char surname[30];
        char number[30];
        int i = 0;
    
        FILE* file;
    
        fopen_s(&file, "./addressBook.list", "rb");
        fread(curContact, sizeof(contactStructType), 1, file);
        while (!feof(file))
        {
            strcpy_s(name, curContact->name);
            strcpy_s(surname, curContact->surname);
            strcpy_s(number, curContact->number);
    
            fread(curContact, sizeof(contactStructType), 1, file);
    
            LoadContact(name, surname, number);
        }
            fclose(file);   //va a buon fine restituendo 0
    }
    
    e qui la fclose c'era.

    Infatti a me funzionava senza errori.

    Se usi un codice e ne mostri un altro, stiamo una settimana a cercare problemi che non ci sono.
  • Re: Fopen_s() fallisce in scrittura e append, errno 13

    oregon ha scritto:


    e qui la fclose c'era.
    non si tratta di quella fclose li..

    oregon ha scritto:


    Infatti a me funzionava senza errori.

    Se usi un codice e ne mostri un altro, stiamo una settimana a cercare problemi che non ci sono.
    è vero che avevo omesso questo
    if (fopen_s(&file, "./addressBook.list", "rb"))
        {
            fopen_s(&file, "./addressBook.list", "wb");
            fclose(file);
        };
    ma poi mi sembra di aver scritto che stupidamente lo avevo omesso... e lo ho postato praticamente subito dopo..e li il problema c'era eccome in quelle 4 righe

    nessuno mi ha detto che se uso fopen() nella condizione di una if devo anche chiuderlo dopo la if stessa ma alla fine ci sono arrivato e va bene così.

    concordo che ho fatto un post confusionario e ti chiedo scusa se ti ho fatto perdere tempo.

    ricapitolando:
    void LoadAddressBook()
    {
        contactStructType* curContact = (contactStructType*)malloc(sizeof(contactStructType));
        memset(curContact, 0, sizeof(contactStructType));
    
        char name[30];
        char surname[30];
        char number[30];
        int i = 0;
    
        FILE* file;
    
        if (fopen_s(&file, "./addressBook.list", "rb"))
        {
            fopen_s(&file, "./addressBook.list", "wb");
            fclose(file);
        }
        fclose(file);
    
        fopen_s(&file, "./addressBook.list", "rb");
        fread(curContact, sizeof(contactStructType), 1, file);
        while (!feof(file))
        {
            strcpy_s(name, curContact->name);
            strcpy_s(surname, curContact->surname);
            strcpy_s(number, curContact->number);
    
            fread(curContact, sizeof(contactStructType), 1, file);
    
            LoadContact(name, surname, number);
        }
            fclose(file);   //va a buon fine restituendo 0
    }
    
  • Re: Fopen_s() fallisce in scrittura e append, errno 13

    Certo che ne hai fatta di confusione ... la if che hai detto di non avere riportato pensavo riguardasse questa fopen
    
        fopen_s(&file, "./addressBook.list", "rb");
        fread(curContact, sizeof(contactStructType), 1, file);
    
    non avevi detto che ne avevi DUE di fopen.

    Comunque, sarà per la prossima volta, magari spiegherai meglio.
Devi accedere o registrarti per scrivere nel forum
20 risposte