Erreur de segmentation lors de manipulation de chaine
Bonjour,
Je suis en train de passez au C sans trop de soucis. actuellement j'ai réussi a retranscrire une partie d'un vieux programme pascal (lazarus) sans trop de soucis.
Mais j'ai une erreur de segmentation sur une partie de mon programme. que j'ai réussi a isoler. Voici le code en question.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int k = 3;
int lg;
char *img = "";
char *tmp = "";
sprintf(tmp, "%d", k);
lg=strlen(tmp);
switch (lg)
{
case 1 : sprintf(img,"000000%s",tmp);
break;
case 2 : sprintf(img,"00000%s",tmp);
break;
case 3 : sprintf(img,"0000%s",tmp);
break;
case 4 : sprintf(img,"000%s",tmp);
break;
case 5 : sprintf(img,"00%s",tmp);
break;
case 6 : sprintf(img,"0%s",tmp);
break;
case 7 : img = tmp;
break;
}
printf("nombre %s ",img);
} |
J'ai donc tenter de le compiler avec les options suivantes et le debugger avec GDB. Voici les commande utiliser
Code:
1 2 3
|
gcc -g test.c -o test
gdb test |
le résultat donne ceci. On retrouve bien l'erreur mais une autre aussi !
Code:
1 2 3 4
|
Program received signal SIGSEGV, Segmentation fault.
0xb7e80464 in __GI__IO_default_xsputn (f=0xbfffed80, data=0xbfffed3f, n=1) at genops.c:475
475 genops.c: Aucun fichier ou dossier de ce type. |
Je travail sous ubuntu 14.04.
Je suis débutant en C. Il y a t il une erreur de débutant que je ne vois pas ??
Merci de votre aide