GRrrrr :'( !! chaines et fichiers

watch_3754 Messages postés 3 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 1 mars 2005 - 1 mars 2005 à 15:30
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 3 mars 2005 à 21:28
On se demande pourquoi c'esst la section "Au secours" qui est la plus remplie ^^
Voila le probleme, je travaille sur des fichiers qui ne sont pas des tableaux, qui n'ont rien de caractéristiques, ce sont des fichiers tt ce qu'il y a de plus con vu qu'ils sont générés aléatoirement. Cependant dans chaque fichier généré se trouve UNE CHAINE DE CARACTERE identique pour tous (0x47654E65526154694F6E) (la chaine peut varier mais on s'en fout pour le moment je pose la question pour 1seule chaine dans un seul fichier)

Donc dans tout cet enchainement de caracteres (toujours différents) cette chaine reste la meme mais placée a des endroits du FICHIER differents (je rappelle que je bosse sur des fichiers et que les string ne font que changer par conséquent :'().
Ce que je cherche a faire c'est de rechercher cette chaine dans tt le fichier, qu'on m'affiche unn message (genre "TROUVEE") et que le pointeur se deplace de 8characteres apres le 0x47...

J'ai tt essayé les strcmp ,les strstr, mais a chauqe fois meme probleme (conv CHAR to CONST CHAR gna gna gna...) Je suis ouvert a tte proposition du moment qu'elle est claire (pas du msdn svpppppppppppp lol).

Merci infiniment :D

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 mars 2005 à 15:52
TROUVER UNE CHAINE DE CARACTÈRES(2) (WIN32)
http://www.cppfrance.com/code.aspx?id=19169

ciao...
BruNews, MVP VC++
0
watch_3754 Messages postés 3 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 1 mars 2005
1 mars 2005 à 16:25
Ah bah comme ca c'est mieux...je comprends plus rien,je vois meme pas où est ton code pour rechercher une chaine dans un fichier....en plus comme y'a pas de commentaires :'(
ca peu pas se faire en 5-6 lignes ce truc la ??

merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 mars 2005 à 16:54
Toute la recherche est dans IsTextInFile() qui boucle sur un buffer.

ciao...
BruNews, MVP VC++
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
1 mars 2005 à 18:06
grrrr il merde de plus en plus souvent ce serveur....

Moi ce que je ferais c'est:

je stocke la chaine de caractere dasn une chaine du genre:
char mot[]="0x47654E65526154694F6E";

avec fgetc() je recupere les caracteres du fichiers un a un en les comparant avec le premier caractere de mot grace a un pointeur placé sur ce premier caractere:
char*p=mot;

si le caractere recupéré dans le fichier correspond au premier caractere de mot alors on incremente de l'adresse du pointeur pour tester le 2eme caractere : p++;

et ainsi de suite si a un moment le caractere extrait du fichier differe de mot alors on reinitialise le pointeur et on recommence

Sinon si ton fichier n'est pas trop gros tu peut essayer de le recuperer entierement dans une chaine...ce sera bcp plus pratique...

J'espere avoir bien compris ton probleme..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 mars 2005 à 18:12
Mais si le fichier est gros sera raison de plus pour ne pas le lire octet par octet, impensable un logiciel procédant ainsi, y aurait souvent le sablier sur l'écran.

ciao...
BruNews, MVP VC++
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
1 mars 2005 à 18:32
Oui c'est vrai

mais comment on peut faire autrement ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
1 mars 2005 à 18:43
On aspire par passe de 32 Ko par exemple, on cherche la suite d'octets, on replace le pointeur de fichier en arriere à chaque passe de la longueur de chaine recherchée, tout cela en boucle tant que le ficheir fournit des octets (non EOF), en somme comme dans mon exemple c'est vitesse assurée.

ciao...
BruNews, MVP VC++
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
3 mars 2005 à 21:28
ah oui! pas bete!
0
Rejoignez-nous