Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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;
}

 

  • Obrigado 1
  • 4 anos depois...
Postado

@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
Postado

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

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!