meteksoundsystem | 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 :
- #include <stdio.h>
- #include <string.h>
- char mot[100],file_t[300],newtext[10000];
- char k[3];
- //Fonction d'entrée du mot recherché
- int mot_recherche()
- {
- printf("\n\n> Mot recherch%c ? ",130);
- gets(mot);
- fflush(stdin);
- return 0;
- }
- //Fonction d'entrée du chemin du fichier
- int file_c()
- {
- printf("> Chemin d'acc%cs du fichier texte ? ",138);
- gets(file_t);
- fflush(stdin);
- return 0;
- }
- //Fonction principale
- main()
- {
- FILE *file,*file1;
- char s_read[100];
- int l_mot=0,l_file=0,ref=0,t,z,n,decal=0;
- system("cls" );
- puts("ADMIN help by METEK\n" );
- //Entrée du chemin du fichier
- file_c();
- //Chemin du fichier trop long
- if(strlen(file_t)>300)
- {
- puts("\n> Chemin du fichier trop long : ERREUR" );
- puts("> Appuyez sur une touche pour continuer..." );
- getch();
- main();
- }
- //Ouverture en BINAIRE
- file=fopen(file_t,"rb" );
- //Erreur d'ouverture
- if (file==NULL)
- {
- puts("\n> Impossible d'ouvrir le fichier : ERREUR" );
- puts("> Appuyez sur une touche pour continuer..." );
- getch();
- //On relance alors la fonction principale
- main();
- }
- //Si l'ouverture a réussi
- else
- {
- //Il s'agit ici de compter combien d'octets contient le fichier
- //Un caractère étant codé sur 1 octet on aura donc le nombre de caractères du fichier
- //Le pointeur est initialement au début du fichier
- //Tant que l'on atteint pas la fin du fichier,
- //On place dans n un bloc du fichier de la taille d'un entier et on incrémente l_file
- //Le pointeur avance ainsi à chaque tour de la taille d'un entier (4 octets)
- //Il faudra donc multiplier l_file par 4 pour avoir le nombre d'octets et non de groupes de 4 octets
- while(!feof(file))
- {
- n=getw(file);
- l_file++;
- }
- //On multiplie par 4 pour obtenir le nombre d'octets
- l_file=l_file*4;
- //On ferme
- fclose(file);
- //Ouverture en ASCII
- file=fopen(file_t,"r" );
- printf ("> Fichier trouv%c (%d caract%cres) : OK",130,l_file,138);
- }
- //Entrée du mot recherché
- mot_recherche();
- //Longueur du mot
- l_mot=strlen(mot);
- //Erreur si la longueur du mot est nulle
- if ((!l_mot)||(l_mot>100))
- {
- puts("\n> Mot incorrect (longueur nulle ou > 100) : ERREUR" );
- puts("> Appuyez sur une touche pour continuer..." );
- getch();
- main();
- }
- for (t=0;t<=(l_file-l_mot);t++)
- {
- //On place le pointeur à la position t (initialement nulle puis incrémentée)
- fseek(file,t,0);
- //On récupère l_mot caractères à partir de cette position
- //(autant de caractères que de caractères dans le mot)
- //Attention, le deuxième argument est 'l_mot+1' pour récupérer l_mot caractères !
- fgets(s_read,l_mot+1,file);
- //Si les chaînes mot et s_read sont identiques
- if(!(strcmp(s_read,mot)))
- {
- *k=')';
- //GROS PROBLEME
- for (z=0;z<1000;z++);
- while(strcmp(s_read+z,k)!= 0)
- {
- file1=fopen("temp1.txt","w" );
- fprintf (file1,"%c",&s_read+ z);
- fclose(file1);
-
-
- }
- }
- else
- {
- for (z=0;z<l_mot;z++)
- {
- *(newtext+t+decal+z)=*(s_read+z);
- }
- }
- }
- fclose(file);
- printf("tout a ete realise avec succes" );
- getch();
- exit();
- }
|
Message édité par meteksoundsystem le 14-03-2004 à 18:00:08
|