Re-écrire dans un fichier .txt

Re-écrire dans un fichier .txt - C - Programmation

Marsh Posté le 22-04-2007 à 22:06:08    

Salut,
 
j'ai un fichier texte contenant : NOM, PRENOM, SOMME, N°CLIENT
 
- Mon programme va regarder combien le client possède sur son compte.  
- Nous sera demandé ensuite combien celui veut retirer de son compte.
 
Le calcul somme - somme_a_retirer est alors effectué.
 
Ensuite je voudrais aller modifier la somme dans le fichier texte une fois la demande de retrait effectuée, mais je ne sais pas comment faire...
 
Merci.
 

Code :
  1. #include<stdio.h>
  2. typedef struct
  3. {
  4.    char nom[15];
  5.    char prenom[15];
  6.    float somme;
  7.    int id;
  8. }
  9. Compte;
  10. Compte client;
  11. float somme_a_retirer;
  12. float modif;
  13. int main(void)
  14. {
  15.    FILE *f1;
  16.    f1=fopen("client.txt", "r-w" );
  17.    fscanf(f1, "%s %s %f %d", &client.nom, &client.prenom, &client.somme, &client.id);
  18.    printf("Information : %s %s %f %d\n", client.nom, client.prenom, client.somme, client.id);
  19.    printf("Combien voulez-vous retirer ?\n" );
  20.    scanf("%f", &somme_a_retirer);
  21.    modif=client.somme - somme_a_retirer;
  22.    ///////// Comment faire ? \\\\\\\\\
  23.    fclose(f1);
  24. }


Message édité par Nichlas le 22-04-2007 à 22:08:21
Reply

Marsh Posté le 22-04-2007 à 22:06:08   

Reply

Marsh Posté le 22-04-2007 à 22:10:32    

il est assez diificile de modifier un fichier  
 
le plus simple ets souven de recopier le fichier avec les données modifiée dans un fihcier temportaire, puis de remaplcer le fichier par le temporaire
 
sinon, on a inventé ( recemment ) les bases de données pour ce genre de besoin  [:twixy]

Reply

Marsh Posté le 22-04-2007 à 22:13:20    

Ouais les BDD c'est sûr que c'est très pratique, mais je fais ça pour manipuler le C avec des fichiers .txt
 
Ca va être très dûr à faire donc ?  :(

Message cité 1 fois
Message édité par Nichlas le 22-04-2007 à 22:16:08
Reply

Marsh Posté le 22-04-2007 à 22:17:36    

non, mais passe par un fichier temporaire, ca ira mieux  
 
tu dois pouvoir remplacer un bout de fichier, mais il faut faire tres attention a la taille des données

Reply

Marsh Posté le 22-04-2007 à 22:19:21    

Ca ne risque pas d'être la galère... car avec un seul client ça doit être jouable, mais si j'en ai 5-10... aie aie non ?


Message édité par Nichlas le 22-04-2007 à 22:19:31
Reply

Marsh Posté le 22-04-2007 à 22:25:25    

Nichlas a écrit :

Ouais les BDD c'est sûr que c'est très pratique, mais je fais ça pour manipuler le C avec des fichier .txt


Tu veux sans doute dire "manipuler les fichiers txt avec le C" !!!
 

Nichlas a écrit :

Ca va être très dûr à faire donc ?  :(


Ca dépend. Un fichier informatique se caractérise par 2 attributs

  • sa géographie (la disposition des informations)
  • sa taille d'enregistrements


A partir de là, on peut avoir 4 cas
1) géographie fixe, taille fixe => chaque ligne contient les mêmes infos de même taille dans le même ordre
2) géographie fixe, taille mobile => chaque ligne contient les mêmes infos dans le même ordre mais pas de même taille => Il faut un séparateur qui sépare les infos les unes des autres (ex: un csv)
3) géographie mobile, taille fixe => chaque ligne contient les mêmes infos de même taille mais pas dans le même ordre => chaque info est donc précédée de sa caractéristique pour qu'on sache de quoi il s'agit quand on la traite
4) géographie mobile, taille mobile => t'auras bien compris le schéma
 
Si tu veux modifier un fichier de type "1" ou "3", pas compliqué => tu te places au début de l'enregistrement à modifier et t'en écris un autre de même taille => le nouveau remplace l'ancien
Dans les deux autres cas, évidemment, tu peux plus te faire pareil car les infos sont de tailles différentes => tu peux donc écrire trop et déborder sur l'enregistrement suivant => une première solution consiste à lire l'enregistrement, revenir en arrière de la taille lue puis reécrire par dessus. La seconde est de tout stocker le fichier en mémoire, travailler dessus puis tout réécrire !!!


Message édité par Sve@r le 22-04-2007 à 22:37:08

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 22-04-2007 à 22:26:37    

Pour moi qui programme depuis 6 mois, je suis en galère quoi :pt1cable:

Message cité 1 fois
Message édité par Nichlas le 22-04-2007 à 22:27:15
Reply

Marsh Posté le 28-04-2007 à 19:08:17    

Nichlas a écrit :

Pour moi qui programme depuis 6 mois, je suis en galère quoi :pt1cable:


Arf... c'est en forgeant qu'on devient forgeron... :sol:  


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed