[C] probleme sprintf et pointeur :S

probleme sprintf et pointeur :S [C] - C - Programmation

Marsh Posté le 24-12-2009 à 21:31:23    

Bonsoir tout le monde :  
 
Voila le souci : Je souhaite stocker des chaines de caractères lorsque qu'elle répondent a certaines conditions
Ces chaines de caractères sont des numéros de carte-bleu.
Je souhaite les stocker dans un tableau de int :  
 
 
char *numero_carte = malloc(16); // un numéro de carte = 16 caractères.
int carte[3] = {0} ;  // Il y aurai 3 numéros de carte a stocké dans  ce tableau.
int j = 0;
 
int nb = sscanf(info_carte, "|%[^|]|%[^|]|\n", numero_carte, montant_carte); // je recupere numero_carte qui  est contenu dans info_carte. Jusque la tout va bien, le numero de carte est bien recupere (testé). Puis ...
 
if (strncmp(numero_carte, "0002", 4) == 0){                           // test les 4 premiers chiffres de la carte
  sprintf(carte[j], "%s", numero_carte);                   // Cette ligne ne passe pas  
                j++;
}
 
Il y a bien entendu un for qui englobe tout cela, a chaque corps de boucle info_carte est diffèrent.
 
 
Je n'ai pas l'impression de pouvoir etre plus clair, mais je n'ai pas l'impression de l'avoir été non plus :S
Besoin de votre aide !!
 
Et bonne fete surtout ;)

Reply

Marsh Posté le 24-12-2009 à 21:31:23   

Reply

Marsh Posté le 24-12-2009 à 23:50:05    

Hello  :D  
bien claire pour le tout!  
mais //cette ligne ne passe pas ????? undetailed
 
... ok je vois que tu ne reset pas j , j++ ou elle va aller
 tu a 3 numeros! :pfff:  

Reply

Marsh Posté le 25-12-2009 à 01:54:46    

tu passes un int alors que to' snprintf attend une chaîne  

Reply

Marsh Posté le 25-12-2009 à 15:53:45    

Merci pour vos reponses!
 
Alors lors de la compilation il ya le warning suivant "passing arg 1 of sprintf makes pointer from integer without a cast"
 
Si j'execute le programme il me renvoie un "segmentation fault".
 
 
J'ai donc changer le type de mon tableau en le déclarant comme suit :  
 
int *carte[3] = {0};
 
Compilation : passing arg 1 of sprintf from incompatible ponter type.
Execution : segmentation fault.
 
Donc changement de nouveau en char *carte[3] = {0};
 
Compilation : plus de warning !
Execution : Segmentation fault encore !
 
 
Je suis un peu perdu dans ces histoire de pointeur et encore plus sur les pointeur de tableau ou tableau de pointeur plutot....
 
 
@_tomjost : j'incremente j à chaque fois que le tableau se rempli afin de stocker un numero de carte dans chaque case... cela me parait normal.
 
 
Je précise que j'utilise Cygwin comme machine virtuelle.

Reply

Marsh Posté le 25-12-2009 à 18:34:38    

c'ets pas ça le probleme. Regarde les types de tes variables. carte[i] est un ENTIER, %s attend une chaine de caractere, c'est incompatible.
 
Si tu veut CONVERTIR la chaine contenant "1234567" en entier valant 1234567, regarde du coté des fonctions strtoul et consoeurs

Reply

Marsh Posté le 25-12-2009 à 18:53:00    

Et y'a pas de fin de ligne dans numero_carte :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed