[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