en fait j'aimerais savoir si je suis dans une chaine de caractère ou si au contraire je dépasse
ex:
a = "abc";
a[0] <- je suis dedans
a[300] <- je suis dehors (bien même... )
parceque a[300] me renvoie forcément n'importe quoi puisqu'il va piocher çà dans la mémoire, or je voudrais qu'il me renvoie 0 le petit, histoire de l'utiliser comme booleen
donc je voudrais savoir, s'il vous plait, comment faire pour déterminer si je suis dans la chaine ou pas...
Ce que je fais avec: pas nécessaire de le lire
voilà, je travaille en ce moment sur des gros fichiers et j'aimerais optimiser mon strlen et donc raccourcir mon temps de calcul
j'ai donc fait une fonction my_strlen qui prend en 2ème argument un entier qui va correspondre à l'incrémentation de ma longueur
Code :
- int my_strlen(char *str, int n)
- {
- int len;
- puts("strlen optimise" );
- for (len = 0; str[len]; len += n) // sauf que là ca déconne
- ;
- for (len -= n; str[len]; len++)
- ;
- return len;
- }
|
ex avec une incrémentation de 3 en 3
a="abcdefg";
a[0] dedans len = 0
a[3] dedans len = 3
a[6] dedans len = 6
a[9] dehors len = 9 <-- résultat du strlen à la louche
puis ensuite on enleve 3 à 9 puisque on a dépassé dans la dernière incrémentation
et la on va de 1 en 1 pour avoir la bonne taille
a[6] dedans len = 6
a[7] dehors len = 7
resultat -> 7
sur une chaine de 7 cararctères c'est con, mais sur une chaine de 700000, ca aide bien