IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

fopen / fseek diverses erreurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2005
    Messages : 87
    Par défaut fopen / fseek diverses erreurs
    Bonjour !
    Je cale depuis 1h sur ce bout de code. Je suis sous linux.
    Après le fopen en w+ j'ai droit à "no such file" et au fseek j'ai "illegal seek".
    J'ai beau consulter le man, je ne comprends pas mon erreur.

    Quelqu'un pour éclaircir mes bêtises ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        FILE* f;
     
        if((f = fopen("bidul.dat", "r+b")) == NULL)
        {
            puts("Le fichier n'existe pas");
            puts("on le cree");
            if((f = fopen("bidul.dat", "a+b")) == NULL)
            {
                puts("creation ratee");
            }
            else
            {
                perror("avant fseek");
                printf("%d",fseek(f, 1, SEEK_SET));
                perror("resultats seek");
            }
        }
        else
        {
            puts("ouverture reussie");
            printf("%d",fseek(f, 0, SEEK_SET));
                perror("resultats seek");
        }
     
        return 0;
    }

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Si "fopen" ne renvoie pas NULL, c'est que la fonction a réussi. Il n'y a donc pas lieu de lire le code d'erreur.
    Le code d'erreur est à lire seulement si la fonction échoue.

    Dans la manpage, voici ce qui est écrit :
    Le numéro d'erreur est obtenu à partir de la variable externe errno, qui contient le code d'erreur lorsqu'un problème survient, mais qui n'est PAS effacé lorsqu'un appel est réussi.
    Concernant "fopen" :
    S'il réussissent intégralement fopen, fdopen et freopen renvoient un pointeur sur un fichier, de type FILE. Sinon, ils renvoient NULL et errno contient le code d'erreur.
    Donc, lorsque tu tentes de lire le fichier inexistant, "fopen" renvoie NULL et "errno" contient le code d'erreur. Lorsque tu crées ensuite le fichier et que la fonction réussit, "perror" t'affiche donc l'erreur précédente (l'appel du 1er "fopen", qui a échoué).

Discussions similaires

  1. [MySQL] Obtention de diverses erreurs : undefined index et invalid resource
    Par kate59 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/02/2008, 11h51
  2. Réponses: 4
    Dernier message: 28/10/2007, 12h07
  3. [PHPMailer] Diverses erreurs
    Par Kraian dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 10/05/2006, 17h42
  4. [FTP] Erreur fopen si le fichier existe déja
    Par psykbe dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo