Attention : Cette fonction retourne l'adresse d'une variable locale.
Ce warning n'est pas à négliger : tu déclares résultat dans ta fonction. Cela veut dire que c'est une variable locale, et qu'à la fin de la fonction elle n'existe plus. Donc quand tu récupèreras son adresse au niveau du code appelant, il y aura de la daube dedans.
En général pour faire un truc clean, on alloue la chaîne de retour dans l'appelant, et on passe en paramètre de la fonction les chaînes d'entrée et de sortie, avec leurs tailles respectives. Comme ça tu peux utiliser la valeur de retour pour autre chose, comme récupérer un code d'erreur, ou dans ton cas le nombre de guillemets remplacés.
int traiteApostrophe(char *szIn, int iTailleIn, char *szOut, int *iTailleOut);
iTailleOut n'est pas forcément nécessaire si la chaîne de sortie a la même taille que la chaîne d'entrée.
Partager