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 ?
(…)