[C] problème de lecture de caractères dans un fichier

problème de lecture de caractères dans un fichier [C] - C++ - Programmation

Marsh Posté le 13-06-2002 à 15:50:46    

Voilà mon problème, je lis dans un fichier (ici le pointeur de fichier fptr2) des caractères que je copie dans fptr1. Jusque là, aucun problème.
Ensuite je veux lire un caractère précis à l'aide de fseek. Celui devrait être un entier et être ensuite utilisé pour placer des données à un autre endroit du fichier (parties en rouge). Seulement quand j'exécute mon prog, il me renvoie toujours la valeur "-1" pour caractère lu (en bleu ici). Si quelqu'un pouvait prendre qq minutes pour m'expliquer mon erreur, je lui serai grandement reconaissant. :jap:  
 

Code :
  1. #include <iostream.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. enum {SUCCES,ECHEC};
  5. void lect_aff_ecr_caract(FILE *fin, FILE *fout)
  6. {
  7. int c;
  8.     while ((c=fgetc(fin)) != EOF){
  9.           putchar(c);
  10.           fputc(c, fout);
  11.           }
  12. }
  13. int main(int argc, char *argv[])
  14. {
  15. if (argc == 3) {
  16. FILE *fptr1, *fptr2;
  17. int reval = SUCCES, c, i;
  18. long position_tete, pos_ant, temp;
  19. char info[130];
  20. printf("\nEntrez une chaine de caractere :\n" );
  21. scanf("%s", info);
  22. if ((fptr1=fopen(argv[2], "w" )) == NULL){
  23.     printf("ouverture de %s impossible.\n", argv[2]);
  24.     reval = ECHEC;
  25.     } else if ((fptr2=fopen(argv[1], "r" )) == NULL){
  26.       printf("ouverture de %s impossible.\n", argv[1]);
  27.       reval = ECHEC;
  28.       }else {
  29.             lect_aff_ecr_caract(fptr2,fptr1);
  30.             fseek(fptr1, 0, SEEK_SET);
  31.             c=fgetc(fptr1);
  32.             printf("\n premier passage c = %d", c);
  33.             for (i=1;i<=5;i++){
  34.                 pos_ant=fseek(fptr1, 13, SEEK_CUR); /* ici 13 correspond au décalage nécessaire pour accéder à l'entier que j'ai besoin de lire.*/
  35.                 c=fgetc(fptr1);
  36.                 [#0000ff]printf("\n caractere lu : %d", c);
  37.                 fseek(fptr1, c*100, SEEK_SET);[/#e21c00]
  38.                 printf("position pour écriture : %d", temp=ftell(fptr1));
  39.                 fputc(c, fptr1);
  40.                 fseek(fptr1, pos_ant+1, SEEK_SET);
  41.             }
  42.             i=0;
  43.             fseek(fptr1,100, SEEK_CUR);
  44.             while (info[i] != EOF){
  45.                   fputc(info[i],fptr1);
  46.                   i++;
  47.                   }
  48.             printf("\n pos tete = %d", position_tete=ftell(fptr1));
  49.             fclose(fptr1);
  50.             fclose(fptr2);
  51.             }
  52. return reval;
  53. }else {printf("\n nombre d'arguments mauvais." );
  54.        }
  55. }


Message édité par Rasta Knight le 13-06-2002 à 15:52:13

---------------
Le tout c'est d'y croire! DaBZHWDT site : www.setibzh.com
Reply

Marsh Posté le 13-06-2002 à 15:50:46   

Reply

Marsh Posté le 13-06-2002 à 17:15:32    

En compillant en -Wall pedantic et cie, ca ne donne pas de pb ?


---------------
Aménager un camping car poids lourd dans un bus / car / camion  - Boinc pour faire bosser votre pc
Reply

Marsh Posté le 13-06-2002 à 21:41:47    

up plize :sweat:


---------------
Le tout c'est d'y croire! DaBZHWDT site : www.setibzh.com
Reply

Marsh Posté le 14-06-2002 à 15:15:39    

Code :
  1. if ((fptr1=fopen(argv[2], "w" )) == NULL){


                                           ^^^
        ton fichier ouvert est ecriture et non pas en lecture  :non:  
 

Code :
  1. if ((fptr1=fopen(argv[2], "w+" )) == NULL){


 
C est mieux comme ca  :D


Message édité par MrTonio le 14-06-2002 à 15:16:47

---------------
WoIP - Video and Voice over IP -  http://www.woip.net/
Reply

Marsh Posté le 14-06-2002 à 19:34:18    

merci beaucoup msieur tonio :jap:


---------------
Le tout c'est d'y croire! DaBZHWDT site : www.setibzh.com
Reply

Sujets relatifs:

Leave a Replay

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