Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
815 connectés 

  FORUM HardWare.fr
  Programmation
  C

  lire / ecrire dans un fichier [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lire / ecrire dans un fichier [resolu]

n°736551
didier1809
${citation_perso}
Posté le 24-05-2004 à 17:45:11  profilanswer
 

bonjour, j'ai un petit probleme :
 
j'aimerai créer un fichier avec une ligne et 8 valeurs(chacune sur 3 position, comme 123 par ex). la c'est pas encore trop compliqué.
 
je le lis : ca pas de probleme, ca amrche, mais maintenant, j'aimerai que l'utilisateur puisse modifier une valeur, par ex : faire +8 a la 4e valeur, et ca je ne voit pas comment faire, et j'ai cherché uen reponse ici, mais je n'ai rien trouvé.
 
merci  :jap:  :hello:


Message édité par didier1809 le 25-05-2004 à 09:07:50

---------------
.
mood
Publicité
Posté le 24-05-2004 à 17:45:11  profilanswer
 

n°736559
burgergold
5$? va chez l'diable!
Posté le 24-05-2004 à 18:00:56  profilanswer
 

lire la ligne
faire les changements en mémoire
réécrire la ligne


---------------
http://www.boincstats.com/signature/user_664861.gif
n°736562
didier1809
${citation_perso}
Posté le 24-05-2004 à 18:08:56  profilanswer
 

Burgergold a écrit :

lire la ligne
faire les changements en mémoire
réécrire la ligne


 
ok, donc on est "obligés" de réecrire la ligne entiere ?


---------------
.
n°736564
burgergold
5$? va chez l'diable!
Posté le 24-05-2004 à 18:10:41  profilanswer
 

didier1809 a écrit :

ok, donc on est "obligés" de réecrire la ligne entiere ?


 
selon ce que jai vu dans tous les languages, c'est ce qui est fait habituellement


---------------
http://www.boincstats.com/signature/user_664861.gif
n°736565
didier1809
${citation_perso}
Posté le 24-05-2004 à 18:11:58  profilanswer
 

Burgergold a écrit :

selon ce que jai vu dans tous les languages, c'est ce qui est fait habituellement


 
 :jap:  merci, je pensait faire comme en assembler [:joce]


---------------
.
n°736566
cricri_
Posté le 24-05-2004 à 18:12:45  profilanswer
 

non, si tu sais exactement ou sont tes caractères, genre lorsque tu l'as lu, tu as fait un GetPos(), tu peux faire un fwrite à cet endroit en utilisant SetPos() par example

n°736568
burgergold
5$? va chez l'diable!
Posté le 24-05-2004 à 18:15:48  profilanswer
 

Cricri_ a écrit :

non, si tu sais exactement ou sont tes caractères, genre lorsque tu l'as lu, tu as fait un GetPos(), tu peux faire un fwrite à cet endroit en utilisant SetPos() par example


 
 :jap:  
 
jvais tenter de m'en souvenir


---------------
http://www.boincstats.com/signature/user_664861.gif
n°736570
didier1809
${citation_perso}
Posté le 24-05-2004 à 18:18:13  profilanswer
 


 
a mom avis c'est aussi simple de réecrire la ligne, il n'y en a qu'une ;)
 
une autre bete question tant qu'on y est :
 
mon fichier est comme ca :  
 


123;465;789


 
c'est ok si je fait ca ? :

Code :
  1. while (i !=3)
  2.     while ("posision-lue" != ';')
  3.     { 
  4.          a = a + possition lue //la je me demerde pour convertir en int et faire le *10.
  5.          "lire un en plus" // fscanf(fichier,"%c",&buffer) ??
  6.     }
  7. i++;
  8. }


 
 :??:


Message édité par didier1809 le 24-05-2004 à 18:18:25

---------------
.
n°736574
cricri_
Posté le 24-05-2004 à 18:23:52  profilanswer
 

Heuuhh .. vi, enfin c'est du c très schématique ça , car faire : while ("posision-lue" != ';')
ça va pas se compiler ;)

n°736577
didier1809
${citation_perso}
Posté le 24-05-2004 à 18:27:58  profilanswer
 

Cricri_ a écrit :

Heuuhh .. vi, enfin c'est du c très schématique ça , car faire : while ("posision-lue" != ';')
ça va pas se compiler ;)


 
je sais bien :D
 
mais bon, je sais pas trop quoi mettre  :sweat:  


---------------
.
mood
Publicité
Posté le 24-05-2004 à 18:27:58  profilanswer
 

n°736581
cricri_
Posté le 24-05-2004 à 18:40:21  profilanswer
 

y a plusieurs méthode pour traiter ça, par example :
 

Code :
  1. char buf[5];
  2. int val;
  3. ...
  4. fscanf( fichier, "%c%c%c%c", buf);
  5. buf[3] = '\0';
  6. val = atoi(buf);


 

n°736587
cricri_
Posté le 24-05-2004 à 18:58:33  profilanswer
 

me demande si on ne peut pas faire plus simple genre :

Code :
  1. int val;
  2. char c;
  3. fscanf( fichier, "%d", &val);
  4. fscanf( fichier, "%c", &c);


Message édité par cricri_ le 24-05-2004 à 19:05:54
n°736685
didier1809
${citation_perso}
Posté le 24-05-2004 à 21:09:25  profilanswer
 

Cricri_ a écrit :

me demande si on ne peut pas faire plus simple genre :

Code :
  1. int val;
  2. char c;
  3. fscanf( fichier, "%d", &val);
  4. fscanf( fichier, "%c", &c);




 
sisi, bon, voila le source fini (hors test d'erreurs et cie)
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. main ()
  5. {
  6. FILE *fichier = fopen("fich.txt","r+" );
  7. int a=0,b=0,d=0,e=0,f=0,g=0,h=0,choix,ajout,i=0;
  8. float tot=0;
  9. do{
  10. rewind(fichier);
  11. fread(&a,sizeof(int),1,fichier);
  12. fread(&b,sizeof(int),1,fichier);
  13. fread(&d,sizeof(int),1,fichier);
  14. fread(&e,sizeof(int),1,fichier);
  15. fread(&f,sizeof(int),1,fichier);
  16. fread(&g,sizeof(int),1,fichier);
  17. fread(&h,sizeof(int),1,fichier);
  18. fread(&i,sizeof(int),1,fichier);
  19. rewind(fichier);
  20. puts("50 - 20 - 10 - 5 - 2 - 1 - 0.5 - 0.2" );
  21. cout<<a<<" -  "<<b<<" -  "<<d<<" -  "<<e<<" -  "<<f<<" -  "<<g<<" -  "<<h<<" -  "<<i<<endl;
  22. tot=(a*50)+(b*20)+(d*10)+(e*5)+(f*2)+g+(h*0.5)+(i*0.2);
  23. cout<<"Total : "<<tot<<endl;
  24. puts("on modifie quoi ?" );
  25. cin>>choix;
  26. if(choix !=-1)
  27. {
  28. puts("modif ?" );
  29. cin>>ajout;
  30. switch (choix)
  31. {
  32.     case 1 : a+=ajout;     
  33.            break;
  34.     case 2 : b+=ajout;
  35.      break;
  36.     case 3 : d+=ajout;     
  37.      break;
  38.     case 4 : e+=ajout;     
  39.            break;
  40.     case 5 : f+=ajout; 
  41.            break;
  42.     case 6 : g+=ajout;
  43.            break;
  44.     case 7 : h+=ajout;
  45.            break;
  46.     case 8 : i+=ajout;
  47.            break;
  48.     default :
  49.      break;
  50. }
  51. fwrite(&a,sizeof(int),1,fichier);
  52. fwrite(&b,sizeof(int),1,fichier);
  53. fwrite(&d,sizeof(int),1,fichier);
  54. fwrite(&e,sizeof(int),1,fichier);
  55. fwrite(&f,sizeof(int),1,fichier);
  56. fwrite(&g,sizeof(int),1,fichier);
  57. fwrite(&h,sizeof(int),1,fichier);
  58. fwrite(&i,sizeof(int),1,fichier);
  59. }
  60. }while (choix !=-1);
  61. fclose(fichier);
  62. puts("merci d'avoir utilise ce programme" );
  63. return 0;
  64. }


 
c'est betement un prog pour gerer son argent, en entrantle nombre de pieces ou billets.
 
on quitte en faisant -1.
 
 :hello:


---------------
.
n°736689
gilou
Modérateur
Modzilla
Posté le 24-05-2004 à 21:16:22  profilanswer
 

Cricri_ a écrit :

non, si tu sais exactement ou sont tes caractères, genre lorsque tu l'as lu, tu as fait un GetPos(), tu peux faire un fwrite à cet endroit en utilisant SetPos() par example

sauf que si ton +8 augmente ton nombre d'un chiffre...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°736695
cricri_
Posté le 24-05-2004 à 21:28:13  profilanswer
 

gilou a écrit :

sauf que si ton +8 augmente ton nombre d'un chiffre...
A+,


vi ...  :pt1cable:

n°736817
Taz
bisounours-codeur
Posté le 24-05-2004 à 22:58:16  profilanswer
 

fwrite(&a,sizeof(int),1,fichier);
         fwrite(&b,sizeof(int),1,fichier);
         fwrite(&d,sizeof(int),1,fichier);
         fwrite(&e,sizeof(int),1,fichier);
         fwrite(&f,sizeof(int),1,fichier);
         fwrite(&g,sizeof(int),1,fichier);
         fwrite(&h,sizeof(int),1,fichier);
         fwrite(&i,sizeof(int),1,fichier);  
 
 
ptdr, les tableaux, c'est pour les chiens

n°736825
schnapsman​n
Zaford Beeblefect
Posté le 24-05-2004 à 23:02:47  profilanswer
 

il doit avoir un compilateur C pre-K&R, sans tableaux ni structures [:cupra]


Message édité par schnapsmann le 24-05-2004 à 23:03:03

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°736874
didier1809
${citation_perso}
Posté le 24-05-2004 à 23:24:16  profilanswer
 

petite modif :
 

Code :
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4. main ()
  5. {
  6. FILE *fichier = fopen("fich.txt","r+" );
  7. int a=0,b=0,d=0,e=0,f=0,g=0,h=0,y,choix,ajout,i=0;
  8. float tot=0;
  9. int tab1[8];
  10. const double tab2[8]={2,1,0.5,0.2,0.1,0.05,0.02,0.01};
  11. if(!fichier)
  12. {
  13. puts("erreur d'ouverture du fichier" );
  14. system("pause" );
  15. exit(-1);
  16. }
  17. do{
  18. tot=0;
  19. rewind(fichier);
  20. for (y=0;y<8;y++)
  21.  fread(&tab1[y],sizeof(int),1,fichier);
  22. rewind(fichier);
  23. for (y=0;y<8;y++)
  24.  cout<<tab2[y]<<" - ";
  25. cout<<"\n"; //la je sais pas si c'est bon ou si je doit pas
  26. for (y=0;y<8;y++)
  27.  cout<<tab1[y]<<" -  ";
  28. for (y=0;y<8;y++)
  29.  tot+=tab1[y]*tab2[y];
  30. cout<<"\n\nTotal : "<<tot<<endl;
  31. puts("on modifie quoi ? (-1 pour quitter)" );
  32. cin>>choix;
  33. if(choix !=-1)
  34. {
  35. puts("modif ?" );
  36. cin>>ajout;
  37. tab1[choix-1]+=ajout;     
  38.          
  39. for (y=0;y<8;y++)
  40.  fwrite(&tab1[y],sizeof(int),1,fichier);
  41. }
  42. }while (choix !=-1);
  43. fclose(fichier);
  44. puts("merci d'avoir utilise ce programme" );
  45. return 0;
  46. }


 
il reste des énormités ou pas dans se code ?


Message édité par didier1809 le 24-05-2004 à 23:36:46

---------------
.
n°736946
burgergold
5$? va chez l'diable!
Posté le 24-05-2004 à 23:49:39  profilanswer
 

int a=0,b=0,d=0,e=0,f=0,g=0,h=0,y,choix,ajout,i=0;
 
les a à h c'est plus utilisé nah? :D


---------------
http://www.boincstats.com/signature/user_664861.gif
n°737095
Taz
bisounours-codeur
Posté le 25-05-2004 à 02:35:37  profilanswer
 

oh mais dite moi, j'avais pas vu
 
OH DU C avec des COUT :o

n°737110
didier1809
${citation_perso}
Posté le 25-05-2004 à 07:49:28  profilanswer
 

Taz a écrit :

oh mais dite moi, j'avais pas vu
 
OH DU C avec des COUT :o


 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. main ()
  4. {
  5. FILE *fichier = fopen("fich.txt","r+" );
  6. int y,choix,ajout;
  7. float tot=0;
  8. int tab1[8];
  9. const double tab2[8]={2,1,0.5,0.2,0.1,0.05,0.02,0.01};
  10. if(!fichier)
  11. {
  12. puts("erreur d'ouverture du fichier" );
  13. system("pause" );
  14. exit(-1);
  15. }
  16. do{
  17. tot=0;
  18. rewind(fichier);
  19. for (y=0;y<8;y++)
  20.  fread(&tab1[y],sizeof(int),1,fichier);
  21. rewind(fichier);
  22. for (y=0;y<8;y++)
  23.  printf("%1.2f - ",tab2[y]);
  24. printf("\n" );
  25. for (y=0;y<8;y++)
  26.  printf("%d -  ",tab1[y]);
  27. for (y=0;y<8;y++)
  28.  tot+=tab1[y]*tab2[y];
  29. printf("\n\nTotal : %3.2f\n",tot);
  30. puts("on modifie quoi ? (-1 pour quitter)" );
  31. scanf("%d",&choix);
  32. if(choix !=-1)
  33. {
  34. puts("modif ?" );
  35. scanf("%d",&ajout);
  36. tab1[choix-1]+=ajout;     
  37.          
  38. for (y=0;y<8;y++)
  39.  fwrite(&tab1[y],sizeof(int),1,fichier);
  40. }
  41. }while (choix !=-1);
  42. fclose(fichier);
  43. puts("merci d'avoir utilise ce programme" );
  44. return 0;
  45. }


 
 :whistle:


---------------
.
n°741018
Taz
bisounours-codeur
Posté le 27-05-2004 à 09:28:40  profilanswer
 

for (y=0;y<8;y++)
        fread(&tab1[y],sizeof(int),1,fichier);  
 
ais pas foutre la merdre, mais pourquoi tu veux pas lire les 8 d'un coup ?

n°741049
didier1809
${citation_perso}
Posté le 27-05-2004 à 09:45:37  profilanswer
 

Taz a écrit :

for (y=0;y<8;y++)
        fread(&tab1[y],sizeof(int),1,fichier);  
 
ais pas foutre la merdre, mais pourquoi tu veux pas lire les 8 d'un coup ?


 
parce que c'est la 1e fois que j'utilise les fichiers, donc je ne savais pas qu'on pouvait faire ca, et tu ne fout pas la merde, au contraire ! ;)
 
donc je peut faire ca :

Code :
  1. fread(&tab1,sizeof(int),8,fichier) ?


 
j'ai testé et ca marche  :jap:  
 
merci pour ta remarque  :hello:


Message édité par didier1809 le 27-05-2004 à 09:47:08

---------------
.
n°741054
Taz
bisounours-codeur
Posté le 27-05-2004 à 09:48:26  profilanswer
 

presque, c'est aussi la première fois que tu utilises un tableau et des pointeurs

n°741059
didier1809
${citation_perso}
Posté le 27-05-2004 à 09:50:23  profilanswer
 

Taz a écrit :

presque, c'est aussi la première fois que tu utilises un tableau et des pointeurs


 
on peut presque dire ca, j'ai hésité a mettre le &tab1, et apparement c'est pas ca...
 


---------------
.
n°742131
didier1809
${citation_perso}
Posté le 27-05-2004 à 19:02:19  profilanswer
 

j'ai comprit, le & est inutile :)


---------------
.
n°742231
Taz
bisounours-codeur
Posté le 27-05-2004 à 20:44:25  profilanswer
 

c'est pas qu'il est inutile, c'est qu'il est faux :o

n°742245
didier1809
${citation_perso}
Posté le 27-05-2004 à 20:47:32  profilanswer
 

Taz a écrit :

c'est pas qu'il est inutile, c'est qu'il est faux :o


 
oui, en reflechissant bien  :sweat:  
 
 
merci !!  :jap:


---------------
.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  lire / ecrire dans un fichier [resolu]

 

Sujets relatifs
Probleme de CSS / liens à moitié cliquables [Résolu][Compatibilité entre Moz et IE] Problème de rafraichissement [resolu]
chercher une chaine de caractere dans un fichier textestockage des données dans un fichier XML en C++
"Redirection" en fonction de l'adresse tapée...[toujours pas résolu]Générer un fichier xml à partir d'un xsd via php ?
contenu réel d'un fichier texte ou exe [debutant]-Résolu- [EasyPHP] Internal Server Error !
[Java] Problème pour convertir un string en entier [resolu]Problème écriture dans fichier texte
Plus de sujets relatifs à : lire / ecrire dans un fichier [resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR