POSITION D'UNE CHAINE DANS UNE CHAINE (INSTR) SANS MFC NI CLASS
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012
-
30 mai 2005 à 10:21
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 2023
-
11 août 2005 à 22:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
victorcoasne
Messages postés1101Date d'inscriptionjeudi 24 avril 2003StatutMembreDernière intervention23 juillet 20237 11 août 2005 à 22:45
Bonjour,
Pour le code qui est assez simple qui venait d'une bonne idée et grâce aux commentaires je mets 6/10 !
Bonne prog,
@++
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 6 juin 2005 à 12:48
c'est ce que vecchio56 disait, ...
RaphAstronome
Messages postés104Date d'inscriptionsamedi 7 décembre 2002StatutMembreDernière intervention17 août 2009 6 juin 2005 à 12:36
Il y a des solution beaucoup plus simple et plus optimisées
int InStr(char* Buffer, char* FindBuffer) {
// Retourne le pointeur vers là où est trouvé FindBuffer
char* debutChaineTrouve = strstr(Buffer, FindBuffer);
// Si pas trouvé
if (debutChaineTrouve == NULL) return -1;
// Si trouvé on compare avec le début de la chaîne
return (int)debutChaineTrouve-(int)Buffer;
// Attention le premier caractère =0, le second=1, ect ...
}
Et avec ça pas besoin de #include <string.h>
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014 31 mai 2005 à 00:10
Arnotic & vecchio56 > Merci je prends note :)
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 30 mai 2005 à 23:19
Max12, strstr renvoi le pointeur du début de la chaine où elle à était trouvée.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 30 mai 2005 à 19:21
strstr c'est la même chose, il suffit de faire une soustraction de pointeurs pour obtenir la position
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014 30 mai 2005 à 19:09
strstr retourne pas la posistion ... elle retourne la fin à partir du caractère ... Bon je vais arranger ça la dépendance.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 30 mai 2005 à 10:50
for(unsigned int i = 0; i < strlen(Buffer); i++)
Si ca se trouve le compilo va calculer à chaque fois strlen(Buffer), alors que ca ne change pas
Pour des raisons sémantiques tu devrais mettre Buffer et FindBuffer en const char*
Et si ta fonction dépend de <string.h> puisqu'elle utilise strlen
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 30 mai 2005 à 10:21
11 août 2005 à 22:45
Pour le code qui est assez simple qui venait d'une bonne idée et grâce aux commentaires je mets 6/10 !
Bonne prog,
@++
6 juin 2005 à 12:48
6 juin 2005 à 12:36
int InStr(char* Buffer, char* FindBuffer) {
// Retourne le pointeur vers là où est trouvé FindBuffer
char* debutChaineTrouve = strstr(Buffer, FindBuffer);
// Si pas trouvé
if (debutChaineTrouve == NULL) return -1;
// Si trouvé on compare avec le début de la chaîne
return (int)debutChaineTrouve-(int)Buffer;
// Attention le premier caractère =0, le second=1, ect ...
}
Et avec ça pas besoin de #include <string.h>
31 mai 2005 à 00:10
30 mai 2005 à 23:19
30 mai 2005 à 19:21
30 mai 2005 à 19:09
30 mai 2005 à 10:50
Si ca se trouve le compilo va calculer à chaque fois strlen(Buffer), alors que ca ne change pas
Pour des raisons sémantiques tu devrais mettre Buffer et FindBuffer en const char*
Et si ta fonction dépend de <string.h> puisqu'elle utilise strlen
30 mai 2005 à 10:21