Bonjour,
J’ai une fonction f (char* mot, ...) -> int
qui parcourt un fichier et effectue des comparaisons entre le mot avec les les lignes du fichier (j’utilise donc beaucoup strcmp
dans f
). Je ne met pas le code parce-que f
utilise d’autres fonctions et donc ça a peu d’intérêt.
Mon problème est le suivant : j’ai une fonction rN (char* word) -> char*
qui supprime le caractère \n
à la fin d’un mot si il existe. J’ai besoin que rN
fasse cela sans modifier le mot en paramètre. J’ai donc ça :
char* rmN (char* word){
static char* copiedStr = NULL;
free(copiedStr);
copiedStr = malloc(strlen(word)+1);
strcpy(copiedStr, word);
char* newName = copiedStr;
unsigned long len = strlen(newName)-1;
if (newName[len] == '\n'){
newName[len] = 0;
}
return newName;
}
Le problème c’est qu’à la fin je free
pas rN
. Donc cette fonction n’est pas tip top. Je me suis dis que ça n’était pas grave, pourtant lorsque je fais :
f (rN("a\n"), ...)
j’obtiens un résultat différent de f ("a", ...)
et je ne comprends pas pourquoi ?
Pensez-vous que c’est du à un problème de mémoire ? Si c’est le cas comment améliorer la fonction rN
pour éviter cela ?
Merci beaucoup !