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 :

Inserer Des données dans un fichier


Sujet :

C++

  1. #1
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut Inserer Des données dans un fichier
    Bonjours,

    je voudrai savoir s'il est possible d'insérer des données au milieu d'un fichier sans écraser le contenue. Si oui qu'el fonction le permet?

    Et la c'est une question stupide mais je la pose quand même. Est ce que je peut lire ou ecrire des caractères ASCII si mon projet est en unicode?

    merci et bonne journé.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Pour ce qui concerne une fonction toute faite, pour ta question des données au milieu du fichier, je suis pas sur que ca existe (en tout cas j'en connais pas)
    mais ce que je te suggère c'est de stocker dans une string le fichier, chercher la position qui t'intéresse, et tu fais une copie dans deux strings différentes les données avant et les données après la position. ensuite tu fais une concaténation de ta partie à insérer avec la première puis tu concatènes la partie après avec le résultat de l'opération précédente.
    => résultat t'as une string qui contient toute les données puis tu n'as plus qu'à les copier dans le fichier de départ.


    - Hé Travail ! Qu'est-ce que tu fais ?
    - Bah, je travaille... et toi Parole tu fais quoi ?
    - Bah, je te parle...

  3. #3
    Membre habitué Avatar de Ksempac
    Inscrit en
    Février 2007
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 165
    Points : 185
    Points
    185
    Par défaut
    Pour la 2nde question : l Unicode est compatible avec l ASCII pour les caracteres de base (linverse n'est pas vrai), donc aucun soucis de ce coté.

    Pour la premiere : Je ne suis pas specialiste de l'ouverture des fichiers, mais je ne connais pas de methode automatique pour faire ce genre de manipulation. Je pense que tu dois le faire a la main : sauvegarder quelque part (string/fichier temporaire) la fin de ton fichier, l'effacer du fichier original, rajouter les nouvelles données et remettre les données effacées à la suite.

  4. #4
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut
    Citation Envoyé par Startux
    Pour ce qui concerne une fonction toute faite, pour ta question des données au milieu du fichier, je suis pas sur que ca existe (en tout cas j'en connais pas)
    mais ce que je te suggère c'est de stocker dans une string le fichier, chercher la position qui t'intéresse, et tu fais une copie dans deux strings différentes les données avant et les données après la position. ensuite tu fais une concaténation de ta partie à insérer avec la première puis tu concatènes la partie après avec le résultat de l'opération précédente.
    => résultat t'as une string qui contient toute les données puis tu n'as plus qu'à les copier dans le fichier de départ.
    ta solution est un peut lourde en mémoire. Mais elle a l'avantage d'être facile à metre en place

  5. #5
    Membre actif Avatar de lun4t1k
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    276
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 276
    Points : 274
    Points
    274
    Par défaut
    fseek peut etre? permet de se placer a un offset. mais je ne suis pas sur qu'il n'écrase pas... sinon tu recupere le contenu du fichier ds un char, tu le coupes en 2 tu concatenes , etc...

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 627
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Du fait meme de la nature d'un fichier, il est impossible d'ajouter des données au milieu de celui-ci sans écraser le reste...

    Si tu veux juste modifier une donnée et que tu es absolument certain que la donnée de remplacement prend exactement la meme place que la donnée d'origine, tu peux envisager de faire la modification directement dans le fichier d'origine... mais, honnetement, c'est faire un pari bien audacieux

    La seule solution réellement sécurisante pour effectuer des modifications au sein d'un fichier, c'est:
    • copier le contenu inchangé qui précede la modification du fichier d'origine dans un fichier temporaire
    • modifier/ajouter l'information dans le fichier temporaire
    • copier la fin du fichier d'origine
    • renommer le fichier temporaire avec le nom du fichier d'origine

    le pseudo code qui permettrait plusieurs modifications pourrait resembler à
    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
     
    origine= ouvrir en lecture seule fichier d'origine 
    temporaire ouvrir en écriture le fichier temporaire 
    TANT QUE pas fin de fichier
    |     lecture = Lire origine
    |    SI modification
    |    |    Ecrire modification dans temporaire
    |    SINON
    |    |    Ecrire lecture dans temporaire
    |    FIN SI
    FIN TANT
    fermer origine
    fermer temporaire
    supprimer origine (suis pas sur que ce soit nécessaire... mais bon)
    renommet temporaire en origine

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/01/2014, 14h23
  2. [MySQL] Inserer des données d'un fichier texte dans une tabbe
    Par hous04 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/11/2011, 19h25
  3. Inserer des données dans fichier Xml
    Par Logarythme dans le forum InfoPath
    Réponses: 3
    Dernier message: 28/02/2008, 08h35
  4. Réponses: 3
    Dernier message: 22/02/2004, 20h09
  5. Temps d'accès à des données dans un fichier
    Par TONIAPEL dans le forum Assembleur
    Réponses: 5
    Dernier message: 28/09/2003, 15h21

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