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

 


Dernière réponse
Sujet : [C/C++] mon ftell vise mal?
1234 ok merci :jap:  du conseil :)
 
avec le rb ca marche mieux.:D

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
1234 ok merci :jap:  du conseil :)
 
avec le rb ca marche mieux.:D
youdontcare tu lis ton fichier dans un buffer et recherches dans ce buffer. (+ rapide).
 
FILE* f = fopen("....", "rb");
int fileSize = chopper la taille du fichier (fseek & co)
char* buffer = malloc(sizeof(char)*fileSize);
fread(buffer, 1, fileSize, f);
 
char* search = "texte recherché";
 
char* tempIdx = strstr(buffer, search);
if (tempIdx)
{
  int position = tempIdx - buffer;
}
else
{
  // ... search non trouvé
}
 
fclose(...)
 
si le fichier est trop gros (> 64k par ex), il faudra faire une recherche itérative, tout en prenant soin des chaines recherchées coupées aux frontières (pile poil entre une limite 64k).
1234 tress seullll  :cry:
1234 jme sens seul :sweat:
1234 Je comprends de - en -. ftell me renvoie des valeurs negatives pour les premiers element du fichier.et avec fgetpos c la meme chose.

Code :
  1. int main()
  2. {
  3. FILE *html;
  4. char c;
  5. fpos_t position;
  6. html=fopen("c:/indice.txt","r" );
  7. while(c!=EOF)
  8. {
  9. fgetpos(html,&position);
  10. c=fgetc(html);
  11. printf("%ld : %c\n",position,c);
  12. }
  13. fclose(html);
  14. return 0;
  15. }


 
et voila ce que ca affiche!! :pt1cable:  
(position : caractère du fichier)
 
0 : a
-4 : b
-3 : c
-2 : d
-1 : e
0 : f
1 : g
2 : h
3 : i
4 : j
5 : k
6 :
 
8 : 1
9 : 2
10 : 3
11 : 4
12 : 5
13 : 6
14 : 7
15 : 8
16 : 9
17 :
 
allé merde et pti effort!! pas une idée?

1234 Le but du programme est de rechercher une chaine de caractère dans un fichier et de renvoyer la position de cette chaine.  
mais evidenment  :o mon programme ne marche pas.
Il me retourne une valeur a coté de la bonne. Mais le resultat est tjrs approchant de la vérité cad a 1 ou 2 lignes max de la chaine(sur un fichier de 500lignes).
 
quand je commence ma recherche pres de l'endroit ou se trouve la chaine le resultat est bon mais si je commence loin ca va plus. :cry:  
 
 

Code :
  1. long fsearch(char *chaine,FILE *fichier,long ptdepart)
  2. {
  3. int test=1,i=0;
  4. long longueur=strlen(chaine);
  5. char c;
  6. fseek(fichier,ptdepart,SEEK_SET);    //fixe le point de départ de la recherche
  7. while(test==1)
  8. {     
  9.         test=fscanf(fichier,"%c",&c);
  10.         i=0;
  11.  while(c==*(chaine+i))
  12.         {        
  13.   fscanf(fichier,"%c",&c);
  14.   i++;
  15.         }
  16.         if(i==longueur)
  17.  {
  18.   return ftell(fichier)-longueur-1;
  19.  }
  20. }
  21. return -1; //erreur chaine non trouvé
  22. }


 
une idée un truc pour me mettre sur la voie ca serai cool je desespere, merci.


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