Ir ao conteúdo
  • Cadastre-se

C Linguagem C cadastro de pessoas.


Matheus Henri

Posts recomendados

ola pessoal eu criei um sistema basico de cadastro em C vou arrumando com o tempo, só para exercitar mas queria saber se tem como eu registar de verdade no computador esses dados em .bin ou .txt o que posso colocar no meu codigo? e s etem como?

#include <stdio.h>
#include <stdlib.h>
int main(){
    char name[5] [50],endereco[5] [50],cidade [5] [50], estado [5] [50];
    char cpf[5] [50];
    int i=1;
    int quant;
    
    printf("how much do you people want to store ? \n");
    scanf("%d", & quant);
    
    for(i=0;i<quant;i++){
        printf("Digite nome:\n");
        fflush(stdin);
        scanf("%s", & name);
        printf("Digite endereco:\n");
        fflush(stdin);
        scanf("%s", & endereco);
        printf("Digite cidade:\n");
        fflush(stdin);
        scanf("%s", & cidade);
        printf("Digite estado:\n");
        fflush(stdin);
        scanf("%s", & estado);
        printf("Digite CPF/CNPJ:\n");
        fflush(stdin);
        scanf("%s", & cpf);
    }
    printf("\n-------------------------------------------------------------------------------\n");
    printf("show the people storage\n");
        for(i=0;i<quant;i++){
            printf(" \n NOME:  %s\n ", name);
            printf("ENDERECO:  %s\n ", endereco);
            printf("CIDADE:  %s\n ", cidade);
            printf("ESTADO:  %s\n ", estado);
            printf("CPF/CNPJ:  %s\n ", cpf);
        }
        
    system("pause");
} 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Matheus Henri     para postar seu código é preciso usar o botão  <>   que está lá na barra de ferramentas da janela de responder, pois senão seu código perde alguns caracteres como o  [ i ]  que não está no código, por isso um erro,     e você pode salvar os dados coletados no seu programa gravando eles em um arquivo txt, e para isso você pode usar o comando fprintf dessa forma :

FILE *arquivo;
arquivo=fopen("nome_do_aquivo.txt","w");
for(i=0;i<quant;i++){
    fprintf(arquivo,"%s\n",name[i]    );
    fprintf(arquivo,"%s\n",endereco[i]);
    fprintf(arquivo,"%s\n",cidade[i]  );
    fprintf(arquivo,"%s\n",estado[i]  );
    fprintf(arquivo,"%s\n\n",name[i]  );
}
fclose(arquivo);

e os dados serão gravados no arquivo tipo txt lá na pasta onde você salvou seu programa, e usando o bloco de notas você pode visualizar o que foi gravado.

e quando você quiser recuperar esses dados para usa-los no programa, você abre o arquivo  e usa o comando fscanf para pegar os dados assim :

arquivo=fopen("nome_do_arquivo.txt","r");
if(arquivo==NULL){printf("Erro No Arquivo");exit(1);}
i=0;
while( fscanf(arquivo,"%s",&name[i])!=EOF && fscanf(arquivo,"%s",&endereco[i])!=EOF
    && fscanf(arquivo,"%s",&cidade[i])!=EOF && fscanf(arquivo,"%s",&estado[i])!=EOF
    && fscanf(arquivo,"%s",&cpf[i])!=EOF){
    i++;
}
fclose(arquivo);
printf("\n\n");
for(i=0;i<quant;i++){
    printf("Nome ------> %s\n",name[i]    );
    printf("Endereço --> %s\n",endereco[i]);
    printf("Cidade ----> %s\n",cidade[i]  );
    printf("Estado ----> %s\n",estado[i]  );
    printf("cpf -------> %s\n\n",cpf[i]   );
}

 então seu código completo ficaria assim :

#include <stdio.h>
#include <stdlib.h>
int main(){
    char name[50][50],endereco[5][50],cidade[5][50],estado[5][50];
    char cpf[5][50];
    int i,j,quant;
    FILE *arquivo;

    printf("how much do you people want to store ? \n");
    scanf("%d", & quant);

    for(i=0;i<quant;i++){
        printf("Digite nome: ");
        fflush(stdin);

        gets(name[i]);
        printf("Digite endereco: ");
        fflush(stdin);

        gets(endereco[i]);
        printf("Digite cidade: ");
        fflush(stdin);

        gets(cidade[i]);
        printf("Digite estado: ");
        fflush(stdin);

        gets(estado[i]);
        printf("Digite CPF/CNPJ: ");
        fflush(stdin);

        gets(cpf[i]);
    }
    printf("\n-------------------------------------------------------------------------------\n");
    printf("show the people storage\n\n");
    for(i=0;i<quant;i++){
        printf("NOME ------: %s\n",name[i]    );
        printf("ENDERECO --: %s\n",endereco[i]);
        printf("CIDADE ----: %s\n",cidade[i]  );
        printf("ESTADO ----: %s\n",estado[i]  );
        printf("CPF/CNPJ --: %s\n",cpf[i]     );
    }

    arquivo=fopen("nome_do_arquivo.txt","w");
    for(i=0;i<quant;i++){
        fprintf(arquivo,"%s\n",name[i]);
        fprintf(arquivo,"%s\n",endereco[i]);
        fprintf(arquivo,"%s\n",cidade[i]);
        fprintf(arquivo,"%s\n",estado[i]);
        fprintf(arquivo,"%s\n",cpf[i]);
    }
    fclose(arquivo);
    arquivo=fopen("nome_do_arquivo.txt","r");
    if(arquivo==NULL){printf("Erro No Arquivo");exit(1);}
    i=0;
    while( fgets(name[i],sizeof(name[i]),arquivo)!=NULL && fgets(endereco[i],sizeof(endereco[i]),arquivo)!=NULL
    && fgets(cidade[i],sizeof(cidade[i]),arquivo)!=NULL && fgets(estado[i],sizeof(estado[i]),arquivo)!=NULL
    && fgets(cpf[i],sizeof(cpf[i]),arquivo)!=NULL )
    {
        name[i][strlen(name[i])-1]='\0';
        endereco[i][strlen(endereco[i])-1]='\0';
        cidade[i][strlen(cidade[i])-1]='\0';
        estado[i][strlen(estado[i])-1]='\0';
        cpf[i][strlen(cpf[i])-1]='\0';

        i++;
    }
    fclose(arquivo);
    printf("\n\n");
    for(i=0;i<quant;i++)
    {
        printf("Nome ------> %s\n",name[i]);
        printf("Endereço --> %s\n",endereco[i]);
        printf("Cidade ----> %s\n",cidade[i]);
        printf("Estado ----> %s\n",estado[i]);
        printf("cpf -------> %s\n\n",cpf[i]);
    }
    system("pause");
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...

@valdir taveiros sim, pode fazer algo assim.

 

Mas não usando texto e coisas como fprintf(),

 

O simples é juntar as informações que tenta gravar em um registro só. Em C é uma struct. E a partir daí ler e gravar em discos em termos dessa struct, como um array, usando fseek e fwrite
 

typedef struct
{
    char name[50];
    char endereco[50];
    char cidade[50];
    char estado[3];
    char cpf[20];

}   Registro;

 

Algo assim. E vai tratar o arquivo como um vetor dessas coisas, que são registros de tamanho fixo.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@valdir taveiros     ele está sobrescrevendo o que foi gravado anteriormente por que na função fopen está com a letra "W"  ,    e assim ele cria e reseta o arquivo para começar a gravar desde o início dele ,  e para não sobrescrever  então use a letra "a"  , que vai verificar se o arquivo já existe ,  ele abre o arquivo para gravar a partir do final dele  , ou se não existir  , cria o arquivo para gravar no inicio dele .

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!