1 utilisateur anonyme et 11 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme C ecriture Fichier

n°2203
meteksound​system
Posté le 14-03-2004 à 17:45:01  profilanswer
 

Mon but est d'etudier un fichier txt de rechercher un mot,le localiser et enfin de copier le rest de la ligne
(donc les mots qui le suivent sur la meme ligne) dans un autre fichier txt!!
Bon fonction recherche tout impec mais l'unique et enorme probleme c'est la copie des mots de restant de la ligne (je vous met le code correspondant en rouge).
En fait ca lance normalement la copie mais quand j'ouvre le fichier texte j'ai un é et c'est tout!!!!
Alors pour verifier j'ai remplacé le code en rouge par
printf("%c",&s_read+z); ->et la ben c'est des lignes de é!!!
Je n'arrive pas a voir le probleme dans le code donc si quelqu'un pouvait m'eclairer!!!
MERCI
 
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. char mot[100],file_t[300],newtext[10000];
  4. char k[3];
  5. //Fonction d'entrée du mot recherché
  6. int mot_recherche()
  7. {
  8. printf("\n\n> Mot recherch%c ?  ",130);
  9. gets(mot);
  10. fflush(stdin);
  11. return 0;
  12. }
  13. //Fonction d'entrée du chemin du fichier
  14. int file_c()
  15. {
  16. printf("> Chemin d'acc%cs du fichier texte ?  ",138);
  17. gets(file_t);
  18. fflush(stdin);
  19. return 0;
  20. }
  21. //Fonction principale
  22. main()
  23. {
  24. FILE *file,*file1;
  25. char s_read[100];
  26. int l_mot=0,l_file=0,ref=0,t,z,n,decal=0;
  27. system("cls" );
  28. puts("ADMIN help by METEK\n" );
  29. //Entrée du chemin du fichier
  30. file_c();
  31. //Chemin du fichier trop long
  32. if(strlen(file_t)>300)
  33. {
  34. puts("\n> Chemin du fichier trop long : ERREUR" );
  35. puts("> Appuyez sur une touche pour continuer..." );
  36. getch();
  37. main();
  38. }
  39. //Ouverture en BINAIRE
  40. file=fopen(file_t,"rb" );
  41. //Erreur d'ouverture
  42. if (file==NULL)
  43. {
  44. puts("\n> Impossible d'ouvrir le fichier : ERREUR" );
  45. puts("> Appuyez sur une touche pour continuer..." );
  46. getch();
  47. //On relance alors la fonction principale
  48. main();
  49. }
  50. //Si l'ouverture a réussi
  51. else
  52. {
  53.    //Il s'agit ici de compter combien d'octets contient le fichier
  54.    //Un caractère étant codé sur 1 octet on aura donc le nombre de caractères du fichier
  55.    //Le pointeur est initialement au début du fichier
  56.    //Tant que l'on atteint pas la fin du fichier,
  57.    //On place dans n un bloc du fichier de la taille d'un entier et on incrémente l_file
  58.    //Le pointeur avance ainsi à chaque tour de la taille d'un entier (4 octets)
  59.    //Il faudra donc multiplier l_file par 4 pour avoir le nombre d'octets et non de groupes de 4 octets
  60.    while(!feof(file))
  61.    {
  62.    n=getw(file);
  63.    l_file++;
  64.    }
  65.    //On multiplie par 4 pour obtenir le nombre d'octets
  66.    l_file=l_file*4;
  67.    //On ferme
  68.    fclose(file);
  69.    //Ouverture en ASCII
  70.    file=fopen(file_t,"r" );
  71.    printf ("> Fichier trouv%c (%d caract%cres) : OK",130,l_file,138);
  72. }
  73. //Entrée du mot recherché
  74. mot_recherche();
  75. //Longueur du mot
  76. l_mot=strlen(mot);
  77. //Erreur si la longueur du mot est nulle
  78. if ((!l_mot)||(l_mot>100))
  79. {
  80. puts("\n> Mot incorrect (longueur nulle ou > 100) : ERREUR" );
  81. puts("> Appuyez sur une touche pour continuer..." );
  82. getch();
  83. main();
  84. }
  85. for (t=0;t<=(l_file-l_mot);t++)
  86. {
  87. //On place le pointeur à la position t (initialement nulle puis incrémentée)
  88. fseek(file,t,0);
  89. //On récupère l_mot caractères à partir de cette position
  90. //(autant de caractères que de caractères dans le mot)
  91. //Attention, le deuxième argument est 'l_mot+1' pour récupérer l_mot caractères !
  92. fgets(s_read,l_mot+1,file);
  93.    //Si les chaînes mot et s_read sont identiques
  94. if(!(strcmp(s_read,mot)))
  95.    {
  96. *k=')';
  97. //GROS PROBLEME   
  98. for (z=0;z<1000;z++); 
  99. while(strcmp(s_read+z,k)!= 0)
  100.     {
  101.      file1=fopen("temp1.txt","w" );
  102.      fprintf (file1,"%c",&s_read+ z);
  103.     fclose(file1);
  104.  
  105.  
  106.     }
  107. }
  108.    else
  109.    {
  110.     for (z=0;z<l_mot;z++)
  111.     {
  112.     *(newtext+t+decal+z)=*(s_read+z);
  113.    }
  114. }
  115. }
  116. fclose(file);
  117. printf("tout a ete realise avec succes" );
  118. getch();
  119. exit();
  120. }


Message édité par meteksoundsystem le 14-03-2004 à 18:00:08
mood
Google
Posté le 14-03-2004 à 17:45:01  profilanswer
 

n°2204
Deather2
OpenBSD: the way to go!
Posté le 14-03-2004 à 17:53:54  profilanswer
 

edit : pu besoin de ça
 
sinon, je suis intéréssé par ton sujet alsr si vous avez des réponses merci de nous en donner :-)
@+ all ^^


Message édité par Deather2 le 15-03-2004 à 09:53:48
n°2205
meteksound​system
Posté le 14-03-2004 à 17:59:33  profilanswer
 

c'est vrai j'avais pas vu merci bien c'est bien plus lisible comme ca!!!thx

n°2224
CryoGen
Powered by kitkat©
Posté le 15-03-2004 à 23:03:02  profilanswer
 

Code :
  1. for (z=0;z<1000;z++); 
  2.         while(strcmp(s_read+z,k)!= 0)
  3.             {
  4.                file1=fopen("temp1.txt","w" );
  5.                fprintf (file1,"%c",&s_read+ z);
  6.               fclose(file1);
  7.              
  8.              
  9.             }


 
C'est quoi ce for qui tourne en solo ???


---------------
I am the bone of my sword...
n°2225
KnX
To be or not to code.
Posté le 15-03-2004 à 23:28:01  profilanswer
 

ca me rapelle mes trucs sur caltos le For tout seul ^^


---------------
/!\ KnX's bash NP : Norah Jones - Don't Miss You At All /!\
n°2227
Deadog
Dain Bramaged
Posté le 15-03-2004 à 23:51:56  profilanswer
 

il tourne pas en solo
et même une boucle en solo ça peut être utile (et bourrin) :)

n°2233
CryoGen
Powered by kitkat©
Posté le 16-03-2004 à 16:11:11  profilanswer
 

Y'a un ';' donc il tourne en solo...


---------------
I am the bone of my sword...
n°2235
Deather2
OpenBSD: the way to go!
Posté le 16-03-2004 à 18:20:57  profilanswer
 

surement une sorte de wait();

n°2238
Deadog
Dain Bramaged
Posté le 17-03-2004 à 00:32:25  profilanswer
 

à wouai, j'avais pas vu le ; :D
une erreur surement, pke z est utilisé plus loin

n°2243
Deather2
OpenBSD: the way to go!
Posté le 17-03-2004 à 16:43:59  profilanswer
 

Ah en effet :/

mood
Google
Posté le 17-03-2004 à 16:43:59  profilanswer
 


Aller à :
Ajouter une réponse
 

Hit Parade