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 :

Echec de fopen()


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut Echec de fopen()
    Bonjour à tous,

    J'essaie de copier un fichier avec fopen(). J'ai donc utilisé le code source de la faq:

    http://c.developpez.com/faq/?page=fi...ICHIERS_copier

    Je l'ai un peu modifier pour que ça donne ceci:

    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
     
    int CopyAFile(char const * const source, char const * const destination)
    {
        FILE* fSrc = NULL;
        FILE* fDest = NULL;
        char buffer[512];
        int NbLu;
     
        if ((fSrc = fopen(source, "rb")) == NULL)
    	{
    		printf("Cannot open source file: %s\n", source);
    		exit(1);
    	}
     
        if ((fDest = fopen(destination, "wb")) == NULL)
        {
    		printf("Cannot open dstination file: %s\n", destination);
    		fclose(fSrc);
            exit(1);
        }
     
        while ((NbLu=fread(buffer, 1, 512, fSrc)) != 0)
            fwrite(buffer, 1, NbLu, fDest);
     
        fclose(fDest);
        fclose(fSrc);
     
        return 0;
    }
    Et je l'utilise comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CHAR SourceFile[450+1] = "C:\\BETtest\\test.xml";
     
    printf("\nSourceFile: %s\n", SourceFile);
    CHAR DestinationFile[450+1] = "C:\\BETest\\test\\test.xml";
     
    printf("\nDestinationFile: %s\n\n", DestinationFile);
     
    	CopyAFile(SourceFile, DestinationFile);
    Printf me renvoie bien les bon chemins, sans les doubles antislash, mais la fonction CopyAFile echoue sur le premier fopen().

    Il y a moyen de savoir pourquoi il ne peut pas ouvrir le fichier? Il existe bien, et il n'est pas verrouillé.

    D'avance merci

    Ps: Le but est de pouvoir par la suite copier un fichier à partir d'un snapshot, avec un chemin du genre \?\\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Documents and Settings\blabla\monfichierverrouillé

    Apparemment, la fonction CopyFile() des lib Crosoft n'aime pas trop ce genre de path...

  2. #2
    Invité
    Invité(e)
    Par défaut
    C'est quoi cette notation ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char const * const source
    Met pour la source et la destination.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Est ce que tu peux modifier un peu ton code pour afficher le code d'erreur ?
    en ajoutant #include <errno.h> si necessaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        if ((fSrc = fopen(source, "rb")) == NULL)
    	{
    		int err = errno;
    		perror("Cannot open file");
    		printf("Cannot open source file: %s, error=%d\n", source, err);
    		exit(1);
    	}
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par Gastiflex Voir le message
    C'est quoi cette notation ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char const * const source
    Met pour la source et la destination.
    Non non, c'est bien ainsi que l'on programme en C.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Bonjour,

    Peut-être que le fichier source a été écrasé ou de taille 0 ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    M'endormirai moins con ce soir tiens.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Par défaut
    Merci beaucoup,

    Avec le errno, j'ai pu voir que c'était une faute de frappe de ma part (No such file or directory, error=2)

    encore merci du coup de main.

    Comme je ne sais pas si ça se fait, alors je demande avant.

    Je galère avec les volumes shadows copy depuis environ 1 an, et vos forum C et C++ m'ont énormément aidé, pour ne pas dire supporté mon incompétence depuis au moins trois mois.

    J'aimerais poster l'intégralité du code obtenu afin que si d'autres en ont besoin qu'ils évitent de perdre leur temps. A moins que je ne sois particulièrement mauvais, si j'en ai bavé, ça peut arriver à d'autre. Je peux le faire ici? Y-a-t-il un autre endroit plus approprié?

    Encore merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Echec de la fonction fopen
    Par bestmomo dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2009, 09h09
  2. Réponses: 3
    Dernier message: 08/10/2009, 12h47
  3. Réponses: 5
    Dernier message: 11/12/2002, 12h31
  4. Ouvrir (fopen) un fichier caché
    Par shef dans le forum C
    Réponses: 2
    Dernier message: 09/09/2002, 09h06
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

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