#include "stdio.h"
int main (void) {
char xx[1000] = "hello";
sprintf (xx, "xyzzy plugh %s", xx);
printf ("%s\n", xx);
return 0;
}
:::(Erreur) Comportement non défini: xx est utilisé incorrect dans l'appel à sprintf ou snprintf. Quote: Si la copie a lieu entre des objets qui se chevauchent à la suite d'un appel à sprintf() ou snprintf(), les résultats ne sont pas définis.pourquoi le programme suivant donne-t-il une erreur lorsqu'il est vérifié avec l'analyseur cppcheck
Il fait aussi très peu de sens de le faire de cette façon. Normalement, vous avez un tableau char pour recevoir les chaînes formatées et les paramètres de votre chaîne de format en tant que paramètres provenant de quelque chose. Peut-être mettre à jour votre fonction pour prendre des arguments de la console et mettre ceux-ci pour faire la mise en forme de la chaîne et utiliser snprintf pour le rendre sûr pour les situations de débordement. –