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 :

probleme avec les fichiers en c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut probleme avec les fichiers en c
    Bonjour,
    svp le probleme que j'ai est une liste d'adherents chacun possedant a son tour une liste d'activite j'ai reussi a creer et sauvegarder chaque adherent dans un fichier (ce qui differencie un adherent d'un autre est un code unique) le probleme c'est que je veux editer la liste d'activites et que j'y arrive pas par exemple un adherent:

    code:452
    nom :jean
    prenom :philippe
    .
    .
    listes d'activites:foot--basket

    je veux par exemple supprimer basket seulement pour cette adherent (plusieurs adherent peuvent avoir la meme activite) .
    ou encore ajouter une nouvelle activite comme tennis (l'acces a l'activite se faisant par l'intermediaire d'une fonction de parametres le code d'adherent et le nom de l'activite)
    le probleme est que je suis debutant en langage c est de la a creer une fonction qui travaille directement sur des fichiers me pose enormement de problems plus concretement comment effectuer des operations sur un fichier car j'ai effectuer les fonctions qui travaille sur ces listes le probleme c'est que une fois la console fermee les variables disparaissent alors j'aimerai bien une fonction qui charge ces variable sur console depuis le fichier pour y appliquer mes fonctions si possible
    ca fait une semaine que je tente plusieurs trucs sans succes. car sur le net je trouve l'ecriture et la lecture mais on ne parle pas de modification de fichiers.


    merci de bien vouloir m'eclairer

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 129
    Billets dans le blog
    149
    Par défaut
    Bonjour,

    On ne parle pas trop de modification de fichiers car ce n'est pas trop possible. Effectivement, un fichier peut être vu comme un tableau sur le disque dur. Le problème de ce tableau, c'est qu'il ne peut être agrandi que par la fin.
    Cela fait que:
    - Si vous essayer d'ajouter du contenu au milieu, vous allez écraser les prochains éléments ;
    - Si vous essayer d'enlever du contenu, il faut déplacé tout les éléments.

    La méthode la plus simple revient à lire le fichier, à faire les modifications en mémoire et à réecrire le fichier d'une traite à partir de la mémoire.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut
    merci sve@r de ton dernier post j'ai effectivement suivi la meme direction en faisant une boucle qui lit tous les lignes du fichier j'ai utiliser des strcpy pour les string des atoi pour les int pour la liste de carctere j'ai tente une autre boucle mais je ne sait pas vraiment si ca marche en fait je suppose que cette fonction charger fonctionne(jusqu'a preuve du contraire) j'applique la fonction insertion activite. le probleme est de comment apporter la modification fait au fichier ouvrir le fichier en r+ et reapliquer la fonction? car je ne travaille pas directement avec des fichiers dans le main la seule fois ou je les ai utilise et dans ma fonction d'entrees de donnes de la personne c'est a dire j'insere et j'applique la fonction la c'est un peu complique


    est ce que j'entre dans le fichier avec un w et j'insere une personne avec les fonctions precedentes mais ca marche quant il y'a un seul mais a plusieurs les effacer tous pour une modification!!!!!!!

  4. #4
    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
    atoi pour les int
    La fonction atoi n'est pas sécurisée (on ne peut pas savoir si la fonction a échoué ou non), il est préférable d'utiliser à la place la fonction strtol : http://man.developpez.com/man3/strtol.3.php

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ibuto Voir le message
    merci sve@r de ton dernier post j'ai effectivement suivi la meme direction en faisant une boucle qui lit tous les lignes du fichier j'ai utiliser des strcpy pour les string des atoi pour les int pour la liste de carctere j'ai tente une autre boucle mais je ne sait pas vraiment si ca marche en fait je suppose que cette fonction charger fonctionne(jusqu'a preuve du contraire) j'applique la fonction insertion activite. le probleme est de comment apporter la modification fait au fichier ouvrir le fichier en r+ et reapliquer la fonction? car je ne travaille pas directement avec des fichiers dans le main la seule fois ou je les ai utilise et dans ma fonction d'entrees de donnes de la personne c'est a dire j'insere et j'applique la fonction la c'est un peu complique

    est ce que j'entre dans le fichier avec un w et j'insere une personne avec les fonctions precedentes mais ca marche quant il y'a un seul mais a plusieurs les effacer tous pour une modification!!!!!!!
    1) tu crées une fonction load() qui ouvre le fichier en "r", lit tout le fichier et stocke tout son contenu dans tes mémoires et qui ferme le fichier
    2) tu travailles normalement, modifie tes datas en mémoire, vis ta vie quoi
    3) tu crées une fonction save() qui ouvre le fichier en "w" et écrit tout le contenu des mémoires dedans et qui ferme le fichier
    Et donc tu appelles l'une ou l'autre des fonctions quand ça te chante...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 102
    Par défaut
    Citation Envoyé par Sve@r
    Dans ces cas là, le principe est de récupérer toute la ligne dans une grosse chaine
    Code c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char ligne;[81]
    fgets(fp, 81, ligne);
    je met juste mon petit grain de sel pour faire mon malin...
    mais çà serait pas le contraire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char ligne[81];
    fgets(ligne, 81, fp);
    mais bon.. je te met +1 car tu as fais tout le boulot ^^

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Par défaut
    merci de votre aide precieuse sve@r mais permet moi encore d'ajouter que si la sauvegarde se fait avec une entree en fichier" w "tout l'ancien contenu sera ecrase hors dans mon cas je ne sauvegarde qu'un seul adherent mais si je fait une entree dans le fichier avec un "a "la modification sera apporte mais l'anciene valeur restera(quel dilemne) .dans mon prochain post je posterai ma fonction charger() pour vous demandez conseil sur elle.

Discussions similaires

  1. probleme avec les fichier jar
    Par maind5or dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 14/05/2007, 14h50
  2. Probleme avec les fichiers XML
    Par fle7a dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/07/2006, 10h32
  3. Probleme avec les fichier openGL32.dll et glu32.dll
    Par gazzall17 dans le forum OpenGL
    Réponses: 4
    Dernier message: 16/03/2006, 12h10
  4. Probleme avec les fichier faire un copier coller
    Par mcdonald dans le forum Général Python
    Réponses: 4
    Dernier message: 29/01/2006, 13h38
  5. [VB.NET] Probleme avec les fichiers!!
    Par ludovic85 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/01/2005, 17h12

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