Bonjour à tous, j’ai un programme tout simple:
[cpp]
#include <stdio.h>
#include <string.h>
main()
{
char *a;
sprintf(a,« COUCOU:%d %d »,12,14);
printf(« %s\n »,a);
}
[/cpp]
gcc -c prog.c ->OK
gcc prog.o -o prog ->BUG
Eh bien à l’édition des liens, ça plante, il me fait undefined reference to ‹ sprintf ›.
J’y comprends pas grand chose, dans mes includes, y’a bien sprintf (avec printf) de déclaré dans /usr/include/stdio.h
Le printf fonctionne sinon…
Je pensais à un problème de bibliotheque…
Une idée? Merci
essaye avec -ansi -Wall (-ansi pour sprintf).
Tu a oublié d’allouer de la mémoire pour « a ».
Donc:
[cpp]char *a = malloc(512); // par exemple
char a[512]; // autre exemple[/cpp]
Edit: oups j’avais pas vu que c’était la compil du marchait pas. Ben quand tu auras réussi à compiler et que ton programme plantera, souviens-toi de ma réponse 
Valoche
j’ai essayé vos idées mais aucune ne marche.
Avec -Wall, il m’indique « implicit declaration of function sprintf »
J’y pige plus rien
Sinon j’ai mandrake10 & gcc 3.3.2
rajouter
#include <unistd.h>
#include <stdlib.h>
idem ça ne fonctionne pas…
le problème c’est que printf fonctionne.
Sinon il y aurait un autre moyen de transformer un entier en chaine de caractere (en c++ aussi)
Essaye :
gcc prog.c -E > file
cat file | grep -n printf
Pour voir si dans tes entêtes y a bien la famille des printf?
sinon update ton linux ou ton je sais pas quoi :o
j’ai bien un « extern int sprintf(char* restrict… »
et qu’est ce qui faudrait mettre a jour?
stdio.a ou je sais pas
j’ai pas Linux 
Il est faux ce code. Il manque l’inclusion d’en-têtes (sprintf…), l’allocation de mémoire et le retour d’une valeur par main.
à quoi ça sert de commencer le C par des exemples aussi compliqués ?
Pour montrer que ceux qui viennent d’arriver ne sont pas aptes à comprendre que les anciens messages du forum contenant des chevrons ouvrants/fermants posent problème et qu’il a donc bien inclut ses fichiers h ?
(…)