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

Bibliothèque standard C Discussion :

fseek avec fwrite marche pas ?


Sujet :

Bibliothèque standard C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut fseek avec fwrite marche pas ?
    Bonjour, j'ai un petit soucis avec fseek voila ce que je fais:
    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
    	FILE* hFileR;
    	FILE* hFileW;
     
    	long int val;
    	unsigned char data[2048];
     
    	hFileR = fopen ( "base.avi" , "rb" );
    	hFileW = fopen ( "sansheader.avi" , "ab" );
     
    	fread(data,1,48,hFileR);
     
    	fseek(hFileW, 0, SEEK_SET);
    	fwrite(data,1,48,hFileW);
     
    	fseek(hFileR, 4, SEEK_CUR);
    	val=1000;
    	fwrite(&val,4,1,hFileW);
     
    	fclose(hFileR);
    	fclose(hFileW);
    Le fseek retourne zero ce qui veut dire qu'il fonctionne pourtant ça écrit à la fin du fichier, j'imagine que je dois oublier quelque chose, ça doit etre un tuc stupde mais je trouve pas.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    C'est du C ça, pas du C++.

    Et fseek() a quelques conflits avec le mode "a". J'ignore ce que dit la norme, mais sous certains systèmes unixoïdes, une écriture en mode "a" ou "a+" repositionne toujours le "file pointer" à la fin du fichier...

    Conclusion: Si tu veux utilise fseek(), utilise le mode "w", pas le mode "a"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Par défaut
    Merci mais w efface le fichier existant non ? Sinon y'a pas une alternative a fopen et seek ?

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Les modes w+ et/ou r+ ne doivent sans doute pas effacer le fichier existant.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Le + signifie qu'on désire ouvrir en lecture et en écrtiure. Avec r le fichier doit déjà existé, son contenu est gardé. w le fichier sera créé (ou réinitialisé s'il existe déjà). a est presque comme w sauf que toutes les opérations d'écritures se feront à la fin (indépendamment de la position courante). Donc pour ouvrir un fichier déjà existant en lecture et écriture c'est r+. Attention : après une opération d'écriture, il faut appeler fflush ou une fonction de positionnement avant de commencer une lecture. Après une lecture, il faut appeler une fonction de positionnement avant d'écrire, sauf si on a rencontré la fin du fichier.

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Par défaut
    y a le mode a+ qui ouvre le fichier en lecture/écriture sans en écraser le contenu

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    belasri: La raison d'être de ce thread est ``les problèmes liés aux mode "a" et "a+" ' '...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    belasri: La raison d'être de ce thread est ``les problèmes liés aux mode "a" et "a+" ' '...
    J'ai pas fais attention à ce que j'ai écris
    je voulais écrire r+ et pas a+

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/10/2014, 01h04
  2. media queries avec css3 marche pas
    Par kate59 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 18/04/2013, 19h18
  3. Réponses: 8
    Dernier message: 19/03/2008, 19h08
  4. Réponses: 3
    Dernier message: 30/11/2007, 12h59
  5. [Kylix] Projet avec fenetre marche pas
    Par Therich dans le forum EDI
    Réponses: 1
    Dernier message: 11/07/2003, 12h34

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