Bleme code C validation carte credit

xman_genius Messages postés 97 Statut Membre -  
kilian Messages postés 8854 Statut Modérateur -
salut j ai un bleme avec mon code qui se plante
et me signale l'erreur suivante
ce code permet la validation d'une carte banquaire
invalide conversion from char to const char at line 15
initializing argument 1 of `int atoi(const char*)' at line 15

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

bool verifcard(char char_tab[16])
{
char *ptr;
int num_tab[16];
int nbr,sum,key;
if (strlen(char_tab)!=16)
{
goto fin;
}
for(nbr=0;nbr<strlen(char_tab)-1;nbr+=2)
{
num_tab[nbr]=atoi(char_tab[nbr])*2;
num_tab[nbr+1]=atoi(char_tab[nbr+1]);
sum+=(num_tab[nbr]+num_tab[nbr+1]);
}
nbr=(((int)(sum/10)+1)*10);
key=nbr-sum;
if(key==atoi(char_tab[15]))
return true;
else
goto fin;
fin:
{
return false;
}
}
A voir également:

3 réponses

kilian Messages postés 8854 Statut Modérateur 1 526
 
Fais une conversion à la volée:
atoi( (const char *) char_tab[nbr] );
1
xman_genius Messages postés 97 Statut Membre 21
 
désolé avec le casting le code se plante
s il y a une autre fonction que "atoi ()" qui a la meme fonctionnalité mais avec un type char et non string
merci de me repondre
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
Ah mais oui je suis bête.
char_tb est un tableau mais un element de chr_tab est un char.

Donc il faut que tu crées une variable temporaire pour copier dedans tes valeurs au fur et à mesure et en terminant avec le caractère de fin de chaîne '\0'

Par exemple au lieu de:
num_tab[nbr]=atoi(char_tab[nbr])*2;

Tu fais:
char temp[2];
temp[0]=char_tab[nbr];
temp[1]='\0';
num_tab[nbr]=atoi( (const char *) temp);


Voilà. Ou bien tu te crées une fonction qui convertit en entier depuis le code ascii pour un char.
0