Ir ao conteúdo

Posts recomendados

Postado

Olá,

Estou com dificuldades na hora de implementar as funções de validação e de visualização de registros no meu código.
Sou novo na área, estou começando meus estudos agora e gostaria de saber se alguém poderia me ajudar nesses quesitos.
Tenho um programa de registro de nomes e gostaria de colocar a validação para saber se o CPF já está cadastrado e uma opção para visualizar todos os registros.

Agradeço desde já


Segue código:

 

 

#include <stdio.h> //biblioteca de comunicação com o usuário
#include <stdlib.h> //biblioteca de alocação de espaço em memória
#include <locale.h> //biblioteca de alocações de texto por região
#include <string.h> //biblioteca responsável por cuidar das strings(sequência de caracteres alfanuméricos)

int registro() //int é a variável utilizada para definir números inteiros
{
    //Função Registro, responsável por novos cadastros
    
    setlocale(LC_ALL, "Portuguese");
    
    //começo da criação das variáveis/strings
    char arquivo[40]; //char é a variável utilizada para armazenar caracteres
    char cpf[40];    //criação da variável char de nome "cpf" com carga de 40 caracteres
    char nome[40];     //criação da variável char de nome "nome" com carga de 40 caracteres
    char sobrenome[40]; //criação da variável char de nome "sobrenome" com carga de 40 caracteres
    char cargo[40]; //criação da variável char de nome "cargo" com carga de 40 caracteres
    char telefone[40]; //criação da variável char de nome "telefone" com carga de 40 caracteres
    //final da criação de variáveis/strings
    

    

    printf("        Registro de Usuários      \n\n\n");
    
    printf("Digite o CPF: "); // printf é a função responsável pela exibição na tela
    scanf("%s", cpf); //função que lê o valor/dado digitado pelo usuário
    
    strcpy(arquivo, cpf); //função Responsável por copiar o valor das strings
    
    FILE *file; //função que cria o arquivo no banco de dados
    file = fopen(arquivo, "w"); //cria um novo arquivo (w = write)
    fprintf(file,"\nEssas são as Informações do Usuário:\n\n");
    fprintf(file,"\tCPF: ");
    fprintf(file,cpf); //fprintf salva o valor da variável (no caso, o cpf no arquivo)
    fclose(file); //fecha o arquivo
    
    file = fopen(arquivo, "a"); //função para abrir o arquivo já salvo (a = atualizar)
    fprintf(file, "\n\tNome: "); //função que escreve adiciona algo dentro do arquivo 
    fclose(file);
        
    printf("Digite o Nome: ");
    scanf("%s", nome);
    
    file = fopen(arquivo, "a");
    fprintf(file,nome);
    fclose(file);
    
    file = fopen(arquivo, "a");
    fprintf(file, " ");
    fclose(file);
    
    printf("Digite o Sobrenome: ");
    scanf("%s", sobrenome);
    
    file = fopen(arquivo, "a");
    fprintf(file, sobrenome);
    fclose(file);
    
    file = fopen(arquivo, "a");
    fprintf(file,"\n\tCargo: ");
    fclose(file);
    
    printf("Digite o Cargo Desejado: ");
    scanf("%s", cargo);
    
    file = fopen(arquivo, "a");
    fprintf(file, cargo);
    fclose(file);
    
    file = fopen(arquivo, "a");
    fprintf(file,"\n\tTelefone: ");
    fclose(file);
    
    printf("Telefone: ");
    scanf("%s", telefone);
    
    file = fopen(arquivo, "a");
    fprintf(file, telefone);
    fclose(file);
    
    system("cls"); // reponsável por limpar a tela
    
    printf("        Registro de Usuários      \n\n\n");    
    printf("Deseja Realizar um Novo Registro? \n");
    printf("\n\n    1 = SIM      2 = NÃO\n\n");
    printf("Opção: ");
    
    
    getchar(); //função que lê a entrada do usuário através de caracteres
    
    char opcao; //criando a variável de nome "opção"
    opcao = getchar(); //definindo que "opção" é a escolha o usuário
    
    system("cls");
    
    if (opcao == '1') //se a condição for verdadeira, faça isso
    {    
        registro(); //voltar ao menu "Registros"
    }
    
    else if (opcao == '2') // senão, faça isso
    {
        //apenas voltar ao menu principal
    }
    
    else //se não for nenhum dos dois, faça isso
    {
        printf("        Registro de Usuários      \n\n\n");
        printf("           Opção Inválida.\n");
        printf("          Tente Novamente!");

        
        system("pause");
    }

}

 

  • Amei 1
Postado

Seu código foi escrito em C não em C++, ou seja você indicou a linguagem errada na tag do título do tópico.

 

E tem vários problemas no seu código, sendo que o mais óbvio é que fica abrindo o arquivo, escreve uma frase, fecha o arquivo, abre o arquivo novamente, escreve outra frase, fecha o arquivo novamente, etc etc... Seria melhor abrir o arquivo 1 vez, escrever no arquivo tudo que precisa, e então fechar o arquivo.

 

  • Obrigado 1
Postado

@Heitor.Bruns     esse código não contém a função "int main()" , obrigatória em todos os códigos da linguagem C , talvez tenha postado apenas uma pequena parte de seu código , ficando assim sem a função "principal" , e outros erros são , como disse o , @isrnick ,  abrir e fechar o arquivo várias vezes sem necessidade ,  melhor gravar tudo no final em uma vez só ,  e como está ,  dependendo do compilador / IDE , que esteja usando ele vai gravar o arquivo , porém sem formato , e que poderia ser o tipo ".txt" , de fácil leitura com o bloco de notas , e para isso precisa concatenar juntando o nome do arquivo com esse tipo de dado que é texto

strcat(nome,".txt"); /// nome eh o nome do arquivo
                     /// .txt eh o tipo de dado ( texto ) no arquivo
                     /// que nesse cOdigo eh o nUmero do cpf

e na gravação normalmente se usa esse formato,  assim 

fprintf( file, "%s", nome );/// 1º o arquivo  2º o tipo de dado  3º a variAvel

e gravando tudo de uma vez seria assim 

fprintf
(
  file,
  "\nEssas são as Informações do Usuário:\n\n"
  "\tCPF -------: %s   \n"
  "\tNome ------: %s %s\n"
  "\tCargo -----: %s   \n"
  "\tTelefone --: %s   \n",
  cpf,nome,sobrenome,cargo,
  telefone
);

e na linguagem c, diferente de outras , não existe o comando "elseif" , mas apenas o "else" e o "if" ,   se usados em linhas separadas evita erros de interpretação

if( opcao == '1' )     /// se a condiçAo for verdadeira, faça isso
{
    registro();        /// voltar ao menu "Registros"
}
else
{
    if( opcao == '2' ) /// senAo, faça isso
    {
                       /// apenas voltar ao menu principal
    }
    else               /// se não for nenhum dos dois, faça isso
    {
        printf
        ("        Registro de Usuários\n\n\n"
         "           Opção Inválida.\n"
         "          Tente Novamente!"
        );
        system("pause");
    }
}

 

  • Confuso 1
Postado
7 horas atrás, devair1010 disse:

e na linguagem c, diferente de outras , não existe o comando "elseif" , mas apenas o "else" e o "if" ,   se usados em linhas separadas evita erros de interpretação

 

Existe "else if" na linguagem C sim, e o @Heitor.Bruns usou corretamente.

 

Usar "else" e o "if" aninhados em vários níveis como você fez é muito mais confuso, e fica praticamente ilegível se adicionar mais alguns níveis de "else"s e "if"s quando há várias condições que devem ser verificadas.

  • Obrigado 1
Postado
Em 03/04/2025 às 16:06, Heitor.Bruns disse:

Tenho um programa de registro de nomes e gostaria de colocar a validação para saber se o CPF já está cadastrado e uma opção para visualizar todos os registros.

 

Seu programa ainda tem muitos problemas e está longe de funcionar. E nem é assim um programa, já que não tem sequer main().

 

E nem é um programa em C++.

 

Acho que deve pensar mais sobre o programa antes de escrever código. E ter uma definição mais formal do que está pretendendo fazer. Isso facilita sua vida em muito.

 

Você diz que é um programa de registro de nomes, mas é um cadastro de pessoas com 5 campos. Parece pretender acessar por CPF. 

 

Considere onde e como vai gravar isso. Se vai deixar em um arquivo qual vai ser o formato? Como seus dados tem tamanho fixo pode usar blocos desse tamanho no disco e acessar por bloco, ou usar como texto e acessar por linhas de igual comprimento.

 

Mas como vai ler e gravar isso? Em geral se usa uma parte ou todos os registros em memória, lendo do disco no início e gravando no fim, porque é rápido e fácil de controlar. E se considera uma estrutura de dados, algum tipo de container para seus registros, algo como um vetor, uma lista ou tabela. 

 

Seu programa sequer tem essa entidade, o tal registro. Apenas 5 campos. Fica muito mais difícil assim. Abrir e fechar o arquivo no disco a cada campo também não é opção adequada. 

 

Sugiro repensar. Em relação à linguagem, que é C e não C++, ainda bem um caminho para geral um programa que funcione.

 

Complete seu exemplo e poste de novo.

 

 

  • Obrigado 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!