mon ftell vise mal? [C/C++] - Programmation
Marsh Posté le 11-08-2002 à 18:53:01
Je comprends de - en -. ftell me renvoie des valeurs negatives pour les premiers element du fichier.et avec fgetpos c la meme chose.
Code :
|
et voila ce que ca affiche!!
(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?
Marsh Posté le 11-08-2002 à 20:21:53
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).
Marsh Posté le 11-08-2002 à 16:52:15
Le but du programme est de rechercher une chaine de caractère dans un fichier et de renvoyer la position de cette chaine.
mon programme ne marche pas.
mais evidenment
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.
une idée un truc pour me mettre sur la voie ca serai cool je desespere, merci.