Ir ao conteúdo

Acessando arquivos em C


AnaClaraMash

Posts recomendados

Postado

Ao selecionar a opção 3, deverá ser exibido na tela, de 10 em 10 (aguardar o usuário teclar

enter para continuar exibindo), todos os CPF's do arquivo de validação cujo status seja Válido.

Por exemplo, se fosse selecionada a opção 3 com o arquivo em questão, teríamos como

retorno:

001.002.111-60 (CPF Válido!)

Existe um arquivo, que esta função deve ler e imprimir na tela apenas os CPF's válidos. Mas não tá acontecendo isso. Agradeço a quem poder ajudar!!

O código é o seguinte:

void funcao2 ()
{
FILE *arquivo3;
FILE *arquivo;
int icpf[12];
int i,somador=0,digito1,result1,result2,digito2,valor;
char cpf3[100];

arquivo3 = fopen("cpfsvalidos.txt", "w");

arquivo = fopen("cpf.txt", "r");

while (fgets(cpf3, 100, arquivo) != NULL){

fscanf(arquivo,"%s", &cpf3);

if (strlen(cpf3)!=11){
return 0;
}


if((strcmp(cpf3,"00000000000") == 0) || (strcmp(cpf3,"11111111111") == 0) || (strcmp(cpf3,"22222222222") == 0) ||
(strcmp(cpf3,"33333333333") == 0) || (strcmp(cpf3,"44444444444") == 0) || (strcmp(cpf3,"55555555555") == 0) ||
(strcmp(cpf3,"66666666666") == 0) || (strcmp(cpf3,"77777777777") == 0) || (strcmp(cpf3,"88888888888") == 0) ||
(strcmp(cpf3,"99999999999") == 0))
{

return 0;
} ///se o CPF tiver todos os números iguais ele é inválido.

//Efetua a conversao de array de char para um array de int.
for(i=0;i<11;i++)
{
icpf[i]=cpf3[i]-48;
}

//PRIMEIRO DIGITO.

for(i=0;i<9;i++)
{
somador+=icpf[i]*(10-i);
}

result1=somador%11;

if( (result1==0) || (result1==1) )
{
digito1=0;
}

else
{
digito1 = 11-result1;
}

//SEGUNDO DIGITO.

somador=0;

for(i=0;i<10;i++)
{
somador+=icpf[i]*(11-i);
}

valor=(somador/11)*11;
result2=somador-valor;

if( (result2==0) || (result2==1) )
{
digito2=0;
}

else
{
digito2=11-result2;
}

//RESULTADOS DA VALIDACAO.

if((digito1==icpf[9]) && (digito2==icpf[10]))
{
//printf("\nCPF VALIDADO.\n");
}
arquivo3 = fopen("cpfsvalidos.txt", "a");
printf("\n");
fprintf(arquivo3,"\n\n");
fflush(stdin);
fprintf(arquivo3,cpf3);
fprintf(arquivo3,"\t""(CPF valido!!)");

printf("\nCPF: ");
for (i=0; i<9; i++) {
if (i > 0 && i%3 == 0)
putchar('.');
putchar(cpf3[i]);
}
printf("-%c%c\n", cpf3[9], cpf3[10]);
}
fclose(arquivo);

fclose(arquivo3);

system("pause");

return 0;
}

Postado
Posta os arquivos .txt também

esse é o conteudo do arquivo.txt : 06591204377; valido

06591204377; valido

06591204377; valido

00000; invalido

11111111111; invalido

11111111111; invalido

1; invalido

066591204377; invalido

06591204377; valido

06591204377; valido

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!