[C] problème edition des liens sur sprintf()

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

gcc -o prog prog.c

Tips : man gcc

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 :stuck_out_tongue:

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 :slight_smile: j’ai pas Linux :smiley:

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 ?

(…)