RECHERCHE ET DE REMPLACEMENT DE CARACTÈRES DANS DES CHAINES
mogwai93
Messages postés362Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention 4 novembre 2023
-
23 mars 2009 à 16:17
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
24 mars 2009 à 14:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 24 mars 2009 à 14:32
Plusieurs remarques :
- Aucun controle sur la validité paramètre.
- Pour la fonction replace : 3 parcours via strlen + une boucle for + un strcpy = zéro niveau peformance
- Aucun controle sur la taille des données : si ma chaine1 = "toto" et que je remplace "to" par "tou" ta fonction plante car tu te bases sur dce que te renvoie le strlen pour initialiser la taille de retour.
Prend un peu plus de temps et de recule sur ce que tu fais et soit critique, car on fait pas du C/C++ pour faire de l'anti-performance ou des machines à bug. D'autre language le font déjà très bien...
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 24 mars 2009 à 13:43
Salut,
j'avais déjà codé la même chose, en utilisant les variadics (pour remplacer d'un seul coup plusieurs éléments), et qui remplaçait TOUS les éléments trouvés, ce que je te conseillerais de faire, histoire de ne pas boucler sur ta fonction si tu as plus d'un élément à remplacer.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 mars 2009 à 22:09
char new_string[string_size];
Que fait cette horreur si plus assez de mémoire ???
Tu le sauras comment ???
for (i 0, l 0; i < string_size; l++, i++)
donc: TANT QUE char i < long string_size
C'est du grand nimporte quoi.
Qui assure que string_size sera toujours <= 127 ???
mogwai93
Messages postés362Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention 4 novembre 2023 23 mars 2009 à 16:17
24 mars 2009 à 14:32
- Aucun controle sur la validité paramètre.
- Pour la fonction replace : 3 parcours via strlen + une boucle for + un strcpy = zéro niveau peformance
- Aucun controle sur la taille des données : si ma chaine1 = "toto" et que je remplace "to" par "tou" ta fonction plante car tu te bases sur dce que te renvoie le strlen pour initialiser la taille de retour.
Prend un peu plus de temps et de recule sur ce que tu fais et soit critique, car on fait pas du C/C++ pour faire de l'anti-performance ou des machines à bug. D'autre language le font déjà très bien...
24 mars 2009 à 13:43
j'avais déjà codé la même chose, en utilisant les variadics (pour remplacer d'un seul coup plusieurs éléments), et qui remplaçait TOUS les éléments trouvés, ce que je te conseillerais de faire, histoire de ne pas boucler sur ta fonction si tu as plus d'un élément à remplacer.
23 mars 2009 à 22:09
Que fait cette horreur si plus assez de mémoire ???
Tu le sauras comment ???
for (i 0, l 0; i < string_size; l++, i++)
donc: TANT QUE char i < long string_size
C'est du grand nimporte quoi.
Qui assure que string_size sera toujours <= 127 ???
23 mars 2009 à 16:17
http://www.codyx.org/snippet_remplacer-caracteres-chaine_450.aspx
dès le départ, tu appelles strlen, pour reboucler dessus apres
alors que tu n'as pas besoin de strlen