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

  FORUM HardWare.fr
  Programmation
  C++

  c encore moi .......... (au risque de gener certaines personnes)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

c encore moi .......... (au risque de gener certaines personnes)

n°198115
Lenoiche
Posté le 20-08-2002 à 16:27:59  profilanswer
 

voila j'vous previens si c'est pour me dire que j'suis vraiment trop nul en programmation , spa la peine de venir poster , apsser votre chemin
 
alors pour les autres personnes qui ont la bonne volonté de m'aider , vous etes pret ?????
 
 
 
 
c'est parti , accroché vous ca va décoiffer
 
 

Code :
  1. #include <stdio.h>
  2. char nom1[64]={0},nom2[64]={0},c;
  3. FILE *fichier1,*fichier2;
  4. void lecture(FILE *fichier,char nom[64])
  5. {
  6. if ((fichier = fopen(nom,"r" )) == NULL)
  7.         printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  8.     else
  9.         printf("Fichier %s ouvert",nom);
  10. }
  11. void ecriture(FILE *fichier,char nom[64])
  12. {
  13. if ((fichier = fopen(nom,"w" )) == NULL)
  14.         printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  15.     else
  16.         printf("Fichier %s ouvert",nom);
  17. }         
  18.        
  19.    
  20.          
  21. main()
  22. {
  23.     printf("Entrez le nom du fichier source :\n" );
  24.     scanf("%s",nom1);
  25.     lecture(fichier1,nom1);
  26.    
  27.     printf("Entrez le nom du fichier destination :\n" );
  28.     scanf("%s",nom2);
  29.     ecriture(fichier2,nom2);
  30.    
  31.    
  32.      
  33.    
  34.     while ((c=fgetc(fichier1)) !=';')
  35.         fputc(c,fichier2);
  36.        
  37.     while ((c=fgetc(fichier1)) !=';')
  38.         fputc(c,fichier2);
  39.          
  40. }


 
donc c 'est la partie de lecture / ecriture ki foire depuis que j ai mis les instruction d ouverture de fichier en procedure ....
 
moi pas comprendre pq


Message édité par Lenoiche le 20-08-2002 à 16:41:18
mood
Publicité
Posté le 20-08-2002 à 16:27:59  profilanswer
 

n°198126
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-08-2002 à 16:36:13  profilanswer
 

tu passes le pointeur en paramètre, alors que tu dois passer l'adresse du pointeur, pour que la fonction puisse modifier le contenu de "fichier1" et "fichier2"
cf passage de paramètre dans tout bon cours de C :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°198127
Carbon_14
Posté le 20-08-2002 à 16:36:42  profilanswer
 

Pour passer les arguments aux fonctions, il vaut mieux utiliser un pointeur sur la chaîne nom (son nom est symbolique). Le dimensionnement étant fait ailleurs (déclaration au début (char nom1[64]={0},nom2[64]={0};), la mémoire est réservée et initialisée. Attention à ne pas dépasser 63 caractères utiles (le 64ème est le zéro terminal).
 
  void lecture(FILE *fichier, char *nom)    
  void ecriture(FILE *fichier, char *nom)  
 
Pour regarder plus avant, ai pas le temps ce soir.
 
 

n°198129
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-08-2002 à 16:37:39  profilanswer
 

le prob vient de FILE *
il doit passer FILE **


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°198130
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 16:39:44  profilanswer
 

Et puis je te conseil soit de lire tout une ligne d'un coup soit carrément de lire tout le fichier, c pas top la lecture caractaire par caractaire.


---------------
Le Tyran
n°198132
Lenoiche
Posté le 20-08-2002 à 16:46:24  profilanswer
 

antp a écrit a écrit :

tu passes le pointeur en paramètre, alors que tu dois passer l'adresse du pointeur, pour que la fonction puisse modifier le contenu de "fichier1" et "fichier2"
cf passage de paramètre dans tout bon cours de C :D




 
alors si j ai bien compris le pb vient du fait que mes fichiers ne sont pas bien ouvert  
c pour ca que ca ne marchais plus lorque que les ai mis en fonction et non en instruction dans le programme principale
 
il faut donc passer l'argument en parametre pour qu'il puisse etre changer , c bien ca ????
 
donc en gros faut faire un double pointeur dur la variable FILE
j ai bien compris monsieur le professeur ????

n°198133
Lenoiche
Posté le 20-08-2002 à 16:48:15  profilanswer
 

letoII a écrit a écrit :

Et puis je te conseil soit de lire tout une ligne d'un coup soit carrément de lire tout le fichier, c pas top la lecture caractaire par caractaire.




 
le probleme c qu il faut que je prenne des informations tantot dans un fichier , tantot dans l autre .......
 
et les info d'un fichier ne se suive pas forcement , c a dire qu il faut que je prenne un champs d un fichier A , puis un champs d'une fichier B , puis on reviens sur un autre champs du fichier A ....
les champs de ces fichiers sont séparées par des points virgules

n°198135
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-08-2002 à 16:48:50  profilanswer
 

"argument de paramètre" :heink:
 
faut donner l'adresse de la variable de type "FILE *" pour que la fonction puisse changer, parce que si tu donnes juste la variable elle peut faire tout ce qu'elle veut sauf changer la valeur


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°198137
--greg--
Posté le 20-08-2002 à 16:51:54  profilanswer
 

lenoiche :hello: ça va?

n°198144
LetoII
Le dormeur doit se réveiller
Posté le 20-08-2002 à 17:00:19  profilanswer
 

Lenoiche a écrit a écrit :

 
 
alors si j ai bien compris le pb vient du fait que mes fichiers ne sont pas bien ouvert  
c pour ca que ca ne marchais plus lorque que les ai mis en fonction et non en instruction dans le programme principale
 
il faut donc passer l'argument en parametre pour qu'il puisse etre changer , c bien ca ????
 
donc en gros faut faire un double pointeur dur la variable FILE
j ai bien compris monsieur le professeur ????




 
Trouve toi un bon cours de C ;)


---------------
Le Tyran
mood
Publicité
Posté le 20-08-2002 à 17:00:19  profilanswer
 

n°199387
Musaran
Cerveaulté
Posté le 22-08-2002 à 00:18:30  profilanswer
 

1) Eviter les variables globales.
2) On ne peut transmettre un tableau en argument, seulement son adresse. char nom[64] est convertit en char* nom.
3) Il faut transmetttre un pointeur sur FILE*.
4) La série de fonction de fichiers f... gère un tampon interne au programme. Ce n'est pas un problème d'y accéder 1 caractère  à la fois.
5) int main() requiert un return.

Code :
  1. #include <stdio.h>
  2. void lecture(FILE **const fichier,const char *const nom){
  3. if ((fichier = fopen(nom,"r" )) == NULL)
  4.  printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  5. else
  6.  printf("Fichier %s ouvert",nom);
  7. }
  8. void ecriture(FILE **const fichier,const char *const nom){
  9. if ((fichier = fopen(nom,"w" )) == NULL)
  10.  printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  11. else
  12.  printf("Fichier %s ouvert",nom); 
  13. }         
  14. int main(){
  15. char nom1[64], nom2[64], c;
  16. FILE *fichier1, *fichier2;
  17. printf("Entrez le nom du fichier source :\n" );
  18. scanf("%s",nom1);
  19. lecture(fichier1,nom1);
  20. printf("Entrez le nom du fichier destination :\n" );
  21. scanf("%s",nom2);
  22. ecriture(fichier2,nom2);
  23. int i ;
  24. for(i= 0; i<2 ; ++i)
  25.  while ((c=fgetc(fichier1)) != ';')
  26.   fputc(c,fichier2);
  27. return 0;
  28. }


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°200141
Fork
Posté le 22-08-2002 à 19:11:33  profilanswer
 

Tu devrais peut-être changer le nom de tes fonctions, et les appeler par ex "ouvrir_en_lecture" et "ouvrir_en_ecriture".
Ca rendrait le code plus lisible et c'est une bonne habitude à prendre de donner des noms explicites aux fonctions! :jap:

n°200311
Musaran
Cerveaulté
Posté le 23-08-2002 à 02:23:19  profilanswer
 

Quel plouc je fais !
Mon code n'était pas correct

Code :
  1. :#include <stdio.h> 
  2.  
  3. void lecture(FILE **const fichier,const char *const nom){ 
  4.   if ((*fichier = fopen(nom,"r" )) == NULL) 
  5.      printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom); 
  6.   else 
  7.      printf("Fichier %s ouvert",nom); 
  8. void ecriture(FILE **const fichier,const char *const nom){ 
  9.   if ((*fichier = fopen(nom,"w" )) == NULL) 
  10.      printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom); 
  11.   else 
  12.      printf("Fichier %s ouvert",nom); 
  13. }           
  14. int main(){ 
  15.   char nom1[64], nom2[64], c; 
  16.   FILE *fichier1, *fichier2; 
  17.  
  18.   printf("Entrez le nom du fichier source :\n" ); 
  19.   scanf("%s",nom1); 
  20.   lecture(&fichier1,nom1); 
  21.  
  22.   printf("Entrez le nom du fichier destination :\n" ); 
  23.   scanf("%s",nom2); 
  24.   ecriture(&fichier2,nom2); 
  25.  
  26.  
  27.   int i ;
  28.   for(i= 0; i<2 ; ++i)
  29.    while ((c=fgetc(fichier1)) != ';')
  30.     fputc(c,fichier2); 
  31.   return 0;
  32. }


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°201800
Lenoiche
Posté le 26-08-2002 à 10:16:03  profilanswer
 

okay merci les messieurs pour voter aide ki m a ete d un grand secours
 
:jap:


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

  c encore moi .......... (au risque de gener certaines personnes)

 

Sujets relatifs
[JAVA] Applet qui marchent que sur certaines machines NB inside.[delphi]pouvoir modifier seulement certaines colonnes d'une stringgrid
mailto a plusieurs personnescherche personnes connaissant windev
Recherche personnes motivées pour écrire des tutoriaux HTMLJ'ai besoin d'une ou deux personnes pour m'aider, lisez, c'est sérieux
comment obtenir une liste de personnes connectes....[PHP] lire un fichier texte et modifier certaines valeurs!!!!
connaitre le nbre de personnes onlines sur un forumproblème de dénombrement (ou personnes nintelligentes wanted)
Plus de sujets relatifs à : c encore moi .......... (au risque de gener certaines personnes)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)