[firebase-br] pequeno bug resolvido
//---- Kelsie.Z.Marshall [at gmail]
kelsie.z.marshall em gmail.com
Ter Set 8 18:02:20 -03 2009
Faltou a inicialicação da variável xx, o que poderia ocasionar um erro
abaixo a função correta.
int cnpj_valido(char *str)
{
int d1=0, d4=0, xx=1, nCount=0, fator=0, resto=0, digito1=0, digito2=0,
nro_1=0, nro_2=0;
int DV_Calculado_int=-1, DV_Informado_int=-1;
char CNPJ[14], DV_Calculado[3], DV_Informado[3], nrochar_1[2],
nrochar_2[2];
d1=0; d4=0; xx=1;
if(strlen(str)!=14)
return -1;
for(nCount = 0; nCount < strlen(str)-1; nCount++)
if(str[nCount] < '0' || str[nCount] > '9')
return -1;
strcpy(CNPJ, str);
d1=0; d4=0; xx=1;
for(nCount = 0; nCount < strlen(CNPJ)-3; nCount++)
{
if( xx < 5)
fator = 6 - xx;
else
fator = 14 - xx;
nrochar_1[0] = CNPJ[nCount];
nrochar_1[1] = '\0';
nro_1 = atoi(nrochar_1);
d1 = d1 + nro_1 * fator;
if(xx < 6)
fator = 7 - xx;
else
fator = 15 - xx;
nrochar_2[0] = CNPJ[nCount];
nrochar_2[1] = '\0';
nro_2 = atoi(nrochar_2);
d4 = d4 + nro_2 * fator;
xx = xx+1;
}
resto = (d1 % 11);
if (resto < 2)
digito1 = 0;
else
digito1 = 11 - resto;
d4 = d4 + 2 * digito1;
resto = (d4 % 11);
if(resto < 2)
digito2 = 0;
else
digito2 = 11 - resto;
sprintf(DV_Calculado,"%d%d\0",digito1 ,digito2);
DV_Informado[0] = CNPJ[12];
DV_Informado[1] = CNPJ[13];
DV_Informado[2] = '\0';
DV_Calculado_int = atoi(DV_Calculado);
DV_Informado_int = atoi(DV_Informado);
if(DV_Calculado_int==DV_Informado_int)
return 1;
else
return 0;
}
Mais detalhes sobre a lista de discussão lista