Quelqu'un pourrais me dire ou est mon erreur ????

Quelqu'un pourrais me dire ou est mon erreur ???? - C++ - Programmation

Marsh Posté le 26-08-2002 à 10:43:05    

Code :
  1. void ecriture(FILE *source,FILE *resultat)
  2. {
  3.     int x,i,j;
  4.     char lettre,mot[64];
  5.     x=0;
  6.     i=0;
  7.     while ((lettre=fgetc(source)) !=';')
  8.         {
  9.           mot[i]=lettre;
  10.           i++;
  11.         }
  12.     for (j=0;j<=i;i++)
  13.         fputc(mot[j],resultat);
  14. }

Reply

Marsh Posté le 26-08-2002 à 10:43:05   

Reply

Marsh Posté le 26-08-2002 à 10:50:28    

Lenoiche a écrit a écrit :

Code :
  1. void ecriture(FILE *source,FILE *resultat)
  2. {
  3.     int x,i,j;
  4.     char lettre,mot[64];
  5.     x=0;
  6.     i=0;
  7.     while ((lettre=fgetc(source)) !=';')
  8.         {
  9.           mot[i]=lettre;
  10.           i++;
  11.         }
  12.     for (j=0;j<=i;i++)
  13.         fputc(mot[j],resultat);
  14. }






 

Code :
  1. void ecriture(FILE *source,FILE *resultat)
  2. {
  3.     int x,i,j;
  4.     char lettre,mot[64];
  5.     x=0;
  6.     i=0;
  7.     while ((lettre=fgetc(source)) !=';')
  8.         {
  9.           mot[i]=lettre;
  10.           i++;
  11.         }
  12.     for (j=0;j<i;j++)
  13.         fputc(mot[j],resultat);
  14. }

Reply

Marsh Posté le 26-08-2002 à 11:01:58    

lol
 
j suis vraiment un boulet mais de toute façon pas reveiller
mais par contre ca marche tjrs po

Reply

Marsh Posté le 26-08-2002 à 11:03:54    

Lenoiche a écrit a écrit :

lol
 
j suis vraiment un boulet mais de toute façon pas reveiller
mais par contre ca marche tjrs po




 
Qu'est ce que t'entend par "ca marche pas"?

Reply

Marsh Posté le 26-08-2002 à 11:05:52    

et bien lors de la copilation tout est okay , mais qd je lance sous DOS ca merde
 
voila en gros ce que donne mon programme
 

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

Reply

Marsh Posté le 26-08-2002 à 11:28:54    

Code :
  1. FILE *fichier1, *fichier2, *fichier3;
  2. (...)
  3. void ouverture(FILE *fichier,char *nom,char *attribut)
  4. {
  5. if ((fichier = fopen(nom,attribut)) == NULL)
  6.         printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  7.     else
  8.         printf("Fichier %s ouvert .\n",nom);
  9. }
  10. (...)
  11. main()
  12. {
  13.    printf("Entrez le nom du fichier source :\n" );
  14.    scanf("%s",nom1);
  15.    ouverture(fichier1,nom1,"r" );
  16.    printf("\n" );
  17.    
  18.    
  19.    printf("Entrez le nom du fichier destination :\n" );
  20.    scanf("%s",nom3);
  21.    ouverture(fichier3,nom3,"w" );
  22.  
  23.    ecris(fichier1,fichier2);
  24.    
  25. }


Va falloir réviser un peu les pointeurs...


Message édité par Harkonnen le 26-08-2002 à 11:32:35

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-08-2002 à 11:31:21    

Harkonnen a écrit a écrit :

Code :
  1. void ouverture(FILE *fichier,char *nom,char *attribut)
  2. {
  3. if ((fichier = fopen(nom,attribut)) == NULL)
  4.         printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  5.     else
  6.         printf("Fichier %s ouvert .\n",nom);
  7. }


 
 




 
nan

Reply

Marsh Posté le 26-08-2002 à 11:31:27    

Harkonnen a écrit a écrit :

Code :
  1. void ouverture(FILE *fichier,char *nom,char *attribut)
  2. {
  3. if ((fichier = fopen(nom,attribut)) == NULL)
  4.         printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  5.     else
  6.         printf("Fichier %s ouvert .\n",nom);
  7. }


 
 




 
le probleme  n est pas la , car l ouverture se passe comme il faut

Reply

Marsh Posté le 26-08-2002 à 11:33:21    

J'ai édité ma réponse précédente pour corriger main()...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-08-2002 à 11:35:51    

Harkonnen a écrit a écrit :

Code :
  1. FILE *fichier1, *fichier2, *fichier3;
  2. (...)
  3. void ouverture(FILE *fichier,char *nom,char *attribut)
  4. {
  5. if ((fichier = fopen(nom,attribut)) == NULL)
  6.         printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  7.     else
  8.         printf("Fichier %s ouvert .\n",nom);
  9. }
  10. (...)
  11. main()
  12. {
  13.    printf("Entrez le nom du fichier source :\n" );
  14.    scanf("%s",nom1);
  15.    ouverture(fichier1,nom1,"r" );
  16.    printf("\n" );
  17.    
  18.    
  19.    printf("Entrez le nom du fichier destination :\n" );
  20.    scanf("%s",nom3);
  21.    ouverture(fichier3,nom3,"w" );
  22.  
  23.    ecris(fichier1,fichier2);
  24.    
  25. }


Va falloir réviser un peu les pointeurs...




 
non plus.
 
Voir phrase en gras :D


Message édité par LetoII le 26-08-2002 à 11:36:34
Reply

Marsh Posté le 26-08-2002 à 11:35:51   

Reply

Marsh Posté le 26-08-2002 à 11:39:36    

letoII a écrit a écrit :

 
 
non plus.
 
Voir phrase en gras :D




Elle est ou mon erreur ?  :??:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-08-2002 à 11:42:48    

Harkonnen a écrit a écrit :

J'ai édité ma réponse précédente pour corriger main()...




 
yeahhhhhhhhhh
 
je vois qu il n y a pas que moi ki ne s en sort pas avec els pointeurs !!!!
 
 
sinan j ai trouve mon erreur !!!!!
ecris(fichier1,fichier3)  
 
le fichier 2 je l avais ouvert en lecture seulement
halalalal que des fautes  d etourderies :D
 
en totu cas merci pour votre aide
:jap:

Reply

Marsh Posté le 26-08-2002 à 11:44:00    

Harkonnen a écrit a écrit :

 
Elle est ou mon erreur ?  :??:  




 
 
Ben tu affecte le résultat de la fonction fopen à une vairble locale. Si tu veux que le résultat soit dispo en dehor tu doit passer l'adresse de la variable devant recevoir le résultat (donc un FILE ** ) à la fonction. Hors là t'as mis un FILE*. Donc tu modifie la valeur passée à la fonctino mais tu ne change pas la valeur de la variable en dehors de la focntion.

Reply

Marsh Posté le 26-08-2002 à 11:44:41    

Lenoiche a écrit a écrit :

 
 
yeahhhhhhhhhh
 
je vois qu il n y a pas que moi ki ne s en sort pas avec els pointeurs !!!!
 
 
sinan j ai trouve mon erreur !!!!!
ecris(fichier1,fichier3)  
 
le fichier 2 je l avais ouvert en lecture seulement
halalalal que des fautes  d etourderies :D
 
en totu cas merci pour votre aide
:jap:




 
De rien :D

Reply

Marsh Posté le 26-08-2002 à 11:49:41    

letoII a écrit a écrit :

 
 
 
Ben tu affecte le résultat de la fonction fopen à une vairble locale. Si tu veux que le résultat soit dispo en dehor tu doit passer l'adresse de la variable devant recevoir le résultat (donc un FILE ** ) à la fonction. Hors là t'as mis un FILE*. Donc tu modifie la valeur passée à la fonctino mais tu ne change pas la valeur de la variable en dehors de la focntion.




Ah merde, effectivement, le résultat de fopen est stocké dans fichier ! J'étais persuadé d'avoir lu fichier1, qui est une globale !
 
Quelle idée de donner des noms aussi semblables à des variables...  :sarcastic:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-08-2002 à 11:50:41    

Harkonnen a écrit a écrit :

 
Ah merde, effectivement, le résultat de fopen est stocké dans fichier ! J'étais persuadé d'avoir lu fichier1, qui est une globale !
 
Quelle idée de donner des noms aussi semblables à des variables...  :sarcastic:  




 
HeHe :D

Reply

Marsh Posté le 26-08-2002 à 11:57:25    

Y'a qd même un truc qui me chagrine :
 
fichier1 est un pointeur global vers un FILE, donc la mémoire est de toute façon réservée.
 
fichier1 est transmis en paramètre à la fonction ouverture :
 

Code :
  1. ouverture(fichier1,nom1,"r" );


 
cette zone de mémoire existe, donc la fonction ouverture suivante est correcte :  
 

Code :
  1. void ouverture(FILE *fichier,char *nom,char *attribut)
  2. {
  3. if ((fichier = fopen(nom,attribut)) == NULL)
  4.        printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  5.    else
  6.        printf("Fichier %s ouvert .\n",nom);
  7. }


puisque l'argument fichier correspond à une zone mémoire allouée (fichier1)
 
corrigez moi si je me trompe, la reprise est dure  :sweat:  
   
 


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-08-2002 à 12:00:58    

Harkonnen a écrit a écrit :

Y'a qd même un truc qui me chagrine :
 
fichier1 est un pointeur global vers un FILE, donc la mémoire est de toute façon réservée.
 
fichier1 est transmis en paramètre à la fonction ouverture :
 

Code :
  1. ouverture(fichier1,nom1,"r" );


 
cette zone de mémoire existe, donc la fonction ouverture suivante est correcte :  
 

Code :
  1. void ouverture(FILE *fichier,char *nom,char *attribut)
  2. {
  3. if ((fichier = fopen(nom,attribut)) == NULL)
  4.        printf("ERREUR : impossible d'ouvrir le fichier %s .\n",nom);
  5.    else
  6.        printf("Fichier %s ouvert .\n",nom);
  7. }


puisque l'argument fichier correspond à une zone mémoire allouée (fichier1)
 
corrigez moi si je me trompe, la reprise est dure  :sweat:  
   
 
 




 
Ouai, mais vu que tu n'affecte pas directement fichiers1 dans ta fonction...
 
En fait tu as une variable locale qui a la même valeur que fichier1 et tu modifice cette variable, masi pas fichier1... tu vois le truc?

Reply

Marsh Posté le 26-08-2002 à 12:03:48    

OK :jap:
 
Les joies du passage par référence ou par valeur... J'arrive encore à me faire avoir avec ça !
 
:hello:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-08-2002 à 14:12:50    

Harkonnen a écrit a écrit :

OK :jap:
 
Les joies du passage par référence ou par valeur... J'arrive encore à me faire avoir avec ça !
 
:hello:




 
hehe, c clair que le passage par référence c super :D

Reply

Sujets relatifs:

Leave a Replay

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