Strstr

melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008 - 10 sept. 2005 à 12:55
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 10 sept. 2005 à 17:21
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

melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008
10 sept. 2005 à 13:12
dsl, petite erreur, de copier coller !



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



est la ligne qui bug .
0
mezaya Messages postés 202 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 6 mars 2010
10 sept. 2005 à 13:15
Je comprend pas la ligne : retour = strstr("Engineer", "Engineer"); //// BUG

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

Voili,Voilou
0
xboxut Messages postés 172 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 27 novembre 2009 1
10 sept. 2005 à 13:18
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.
0
xboxut Messages postés 172 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 27 novembre 2009 1
10 sept. 2005 à 13:21
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 @++
0

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

Posez votre question
melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008
10 sept. 2005 à 13:30
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.
0
xboxut Messages postés 172 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 27 novembre 2009 1
10 sept. 2005 à 16:57
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
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
10 sept. 2005 à 17:21
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]
0
Rejoignez-nous