Défi
Énoncé
Le programme lit une ligne sur stdin (au plus 256 caractères) avec fgets. Il calcule la longueur de la chaîne avec strlen, alloue un tampon de taille longueur + 1 avec malloc, vérifie que le pointeur retourné n'est pas NULL, copie la chaîne d'origine dans ce nouveau tampon avec strncpy en s'assurant que le terminateur \0 est bien présent, imprime le tampon sur stdout, puis appelle free. Aucune fuite mémoire ne doit être détectée par Valgrind.
Contraintes
- Compilé avec
gcc -Wall -Wextra -std=c99 -o copie copie.c. - Vérifier le retour de
malloc: siNULL, afficher"Erreur d'allocation"surstderret quitter avec le code 1. - Utiliser
strncpy(dest, src, len)avecdest[len] = '\0'pour garantir la terminaison. - Ne pas utiliser
strdup(non C99 standard). - Vérifiable avec
valgrind --leak-check=full ./copie.
Exemple
Entrée :
Programmation en C
Sortie :
Programmation en C
Exécution sous Valgrind :
LEAK SUMMARY:
definitely lost: 0 bytes in 0 blocks
indirectly lost: 0 bytes in 0 blocks