[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 ?

(…)