Un call n'est pas gratuit...
1) Ça peut être le cas, si:
- La fonction est "inlinée"
- Le compilateur optimise comme un grand ce genre de chose, en "inlinant" automagiquement
2) C'est un débutant, inutile de le noyer. Il optimisera vraiment quand ça sera nécessaire et qu'il aura plus d'expérience. Il est plus simple pour lui d'utiliser des manipulateurs de caractères.
3) Ou à défaut de soustraction on peut:
- Utiliser un masque (on pourrait aussi facilement l'adapter pour inverser la casse):
Code C/C++ :
#include <stdio.h>
void myToUpper(char* s)
{
while (s && *s)
{
if (*s >= 'a' && *s <= 'z')
*s ^= 32;
++s;
}
}
void myToLower(char* s)
{
while (s && *s)
{
if (*s >= 'A' && *s <= 'Z')
*s ^= 32;
++s;
}
}
int main(void)
{
char buff[] = "Un petit Test !";
printf("%s\n", buff);
myToUpper(buff);
printf("%s\n", buff);
myToLower(buff);
printf("%s\n", buff);
return 0;
}
- Utiliser une table de translation:
http://www.google.com/codesearch/p?hl=en#XAzRy8oK4zA/libc/stdlib/toupper_.c&q=toupper&sa=N&cd=3&ct=rc
- Le faire par plusieurs caractères en même temps:
http://code.google.com/p/stringencoders/source/browse/trunk/src/modp_ascii.c
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio