Fonction majuscule
Résolu
hcp7kuz
Messages postés
243
Date d'inscription
Statut
Membre
Dernière intervention
-
hcp7kuz Messages postés 243 Date d'inscription Statut Membre Dernière intervention -
hcp7kuz Messages postés 243 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai écris une fonction qui retourne une chaine mise en majuscule.
Problème, le fonction retourne effectivement la chaine en majuscule, mais avec également quelques caractères en plus, et je ne vois pas pourquoi.
Quelqu'un a un idée ?
Code :
Merci,
hcp7kuz
J'ai écris une fonction qui retourne une chaine mise en majuscule.
Problème, le fonction retourne effectivement la chaine en majuscule, mais avec également quelques caractères en plus, et je ne vois pas pourquoi.
Quelqu'un a un idée ?
Code :
char* strToUpper(char* chaine) { char *result = NULL; result = malloc((strlen(chaine) - 1) * sizeof(char)); int i; for (i = 0; i < strlen(chaine); i++) { result[i] = toupper(chaine[i]); } return result; }
Merci,
hcp7kuz
A voir également:
- Fonction majuscule
- Fonction si et - Guide
- É majuscule - Guide
- Majuscule - Guide
- Code ascii de a majuscule - Guide
- Mettre en majuscule - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, la chaîne de départ se termine par un caractère NULL, indiquant la fin de la chaîne.
strlen() te donne la longueur de la chaîne, sans ce caractère NULL.
donc, ta fonction retourne une chaîne non terminée par un caractère NULL, ce qui explique ce que tu observes.
strlen() te donne la longueur de la chaîne, sans ce caractère NULL.
donc, ta fonction retourne une chaîne non terminée par un caractère NULL, ce qui explique ce que tu observes.
A noter, qu'en C est garantit de valoir 1, il est donc inutile.
On peut optimiser le code, aussi, en évitant de mettre dans la boucle for et en ne l'exécutant qu'une fois au début de la fonction.
Enfin, cela serait bien de tester que malloc a bien alloué la mémoire nécessaire et de décider de ce fait la fonction si ce n'est pas le cas.
Dal
Merci !