Strstr

Signaler
Messages postés
97
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
20 janvier 2008
-
Messages postés
452
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
-
Bonjour



Je n'arrive pas à utiliser strstr(...)



if( lstrcmp(BufMp3, "ID3") == 0 ) //tag v2

{

char Buffer[1000]; // BUG ??

ZeroMemory(Buffer, 1000);

SetFilePointer(hFichier, 3, NULL, FILE_BEGIN);


BOOL err = ReadFile(hFichier, Buffer, 999,
&NumberOfBytesRead, NULL);



char* retour = NULL;

retour = strstr("Engineer", "Engineer"); //// BUG

int resultat = retour - Buffer + 1;

}



Je deprime la !! lol ( je precise que j'ai cherché un bout de temps quand meme, dans des exemples et avec le forum)

Ca doit etre tout bete mais bon ....



Melkior le necrarque

7 réponses

Messages postés
97
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
20 janvier 2008

dsl, petite erreur, de copier coller !



retour = strstr(Buffer, "Engineer"); //// BUG



est la ligne qui bug .
Messages postés
202
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
6 mars 2010

Je comprend pas la ligne : retour = strstr("Engineer", "Engineer"); //// BUG

Ce ne serait pas : retour = strstr( Buffer, "Engineer"); par hasard.

Voili,Voilou
Messages postés
172
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
27 novembre 2009

t un marrant deja donne plus de recision : dans ton buffer tu a tester pendant le debug voir si y avait bien une chaine ac engineer, Ensuite tu a koi comme bug ? seg fault? dans ce cas c que ta chaine buffer n est pas fermé par un \0 et ne contient pas Engineer.
Messages postés
172
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
27 novembre 2009

pour trouver le nombre de char ente le debut de la chaine et ton mot utilise :

size_t strcspn ( const char * string1, const char * string2 );


Search string for occurrence of character set.
Scans string1 character by character, returning the number of characters read until the first occurrence of any character included in string2.
The search includes terminating null-characters, so the function will return the length of string1 if none of the characters included in string2 is in string1.

Parameters.

string1
Null-terminated string to be scanned.
string2
Null-terminated string containing the character set to search for.
Return Value.
Returns the position in string1 of the first occurence of a component character of string2.



http://www.cplusplus.com/ref/cstring/strcspn.html

voila @++
Messages postés
97
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
20 janvier 2008

Toi aussi tu es un petit comique!

Evidement que "Engineer" est dans Buffer, en position 21 pour etre precis.



Ce qui m'étonne, c'est que si je fais:

SetFilePointer(hFichier, 21, NULL, FILE_BEGIN);

Alors strstr trouve bien la chaine "Engineer".



Plus généralement, strstr fonctionne losque le mot recherché est au tout début de Buffer.
Messages postés
172
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
27 novembre 2009

habon je croyais que ct fait pour marcher jusqu au \0 de ta chaine si il trouvait pas :D, lol treve de plaisanterie je doute fort que strstr soit bugger vu l age et l utilisation intensive de la fonction ...
je te conseille de faire tourner ton prog et debug et de mettre des point d arret a toute les lignes XD
Messages postés
452
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
10
Peut etre une idée qui me vient comme ca.

strstr lit dans une chaine jusqu'au premier \0 qu'elle rencontre.

Peut etre que dans la chaine que tu passes par l'intermédiaire de ton
buffer il y a le caractère \0 qui arrive avant le mot que tu cherches.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]