Ir ao conteúdo
  • Cadastre-se

C fprintf para arquivo txt dentro de condição if


Montebelo
Ir à solução Resolvido por arfneto,

Posts recomendados

Boa noite!

Estou começando a aprender C e programando meu primeiro software, procurando coisas pelo google e indo por um processo de tentativa e erro mesmo.

Estou fazendo um programa que registre dados de pacientes em um arquivo txt, consegui fazer a parte principal, solicitar dados ao usuário e salvar esses dados no txt principal.

 Agora o que eu queria é que quando a idade de um paciente for maior que 65, seja registrado em outro txt o CEP (já informado anteriormente) e a idade (já calculada a partir da data de nascimento informada).

Não tenho certeza como fazer essa parte. No momento quando o paciente tem mais de 65 anos, o programa acaba ao invés de salvar os dados no segundo txt e retornar ao menu.

Podem me ajudar por favor?

 

Segue o trecho do código:

 

void cadastrar()
{
    setlocale(LC_ALL,"portuguese");
    FILE*fp;
    fp = fopen("Pacientes.txt","a");
    if (fp == NULL){
    printf("Erro na abertura de arquivo.");
    system("pause");
    exit(1);
    }
    FILE*fr;
    fr = fopen("GrupodeRisco.txt","a");
    if (fr == NULL){
    printf("Erro na abertura de arquivo.");
    system("pause");
    exit(1);
    }

    printf(" Digite o nome do paciente: ");
    fgets(paciente_covid.nome, 100, stdin);
    paciente_covid.nome[strlen(paciente_covid.nome) - 1] = '\0';
    fprintf(fp, "\nNome: %s\n", paciente_covid.nome);
    printf(" Digite o CPF: ");
    fgets(paciente_covid.cpf, 100, stdin);
    paciente_covid.cpf[strlen(paciente_covid.cpf) - 1] = '\0';
    fprintf(fp, "CPF: %s\n", paciente_covid.cpf);
    printf(" Digite o telefone: ");
    fgets(paciente_covid.tele, 100, stdin);
    paciente_covid.tele[strlen(paciente_covid.tele) - 1] = '\0';
    fprintf(fp, "Telefone: %s\n", paciente_covid.tele);
    printf(" Digite o nome da rua: ");
    fgets(paciente_covid.rua, 100, stdin);
    paciente_covid.rua[strlen(paciente_covid.rua) - 1] = '\0';
    fprintf(fp, "Endereço: %s", paciente_covid.rua);
    printf(" Digite o número do endereço: ");
    fgets(paciente_covid.numer, 100, stdin);
    paciente_covid.numer[strlen(paciente_covid.numer) - 1] = '\0';
    fprintf(fp, ", %s\n", paciente_covid.numer);
    printf(" Digite o bairro: ");
    fgets(paciente_covid.bair, 100, stdin);
    paciente_covid.bair[strlen(paciente_covid.bair) - 1] = '\0';
    fprintf(fp, "Bairro: %s\n", paciente_covid.bair);
    printf(" Digite a cidade: ");
    fgets(paciente_covid.cidade, 100, stdin);
    paciente_covid.cidade[strlen(paciente_covid.cidade) - 1] = '\0';
    fprintf(fp, "Cidade: %s", paciente_covid.cidade);
    printf(" Digite o estado (UF): ");
    fgets(paciente_covid.uf, 100, stdin);
    paciente_covid.uf[strlen(paciente_covid.uf) - 1] = '\0';
    fprintf(fp, "-%s\n", paciente_covid.uf);
    printf(" Digite o CEP: ");
    fgets(paciente_covid.cep, 100, stdin);
    paciente_covid.cep[strlen(paciente_covid.cep) - 1] = '\0';
    fprintf(fp, "CEP: %s\n", paciente_covid.cep);
    printf(" Digite o endereço de e-mail: ");
    fgets(paciente_covid.correio, 100, stdin);
    paciente_covid.correio[strlen(paciente_covid.correio) - 1] = '\0';
    fprintf(fp, "E-mail: %s\n", paciente_covid.correio);
    printf(" Digite a data do diagnóstico: ");
    fgets(paciente_covid.diag, 100, stdin);
    paciente_covid.diag[strlen(paciente_covid.diag) - 1] = '\0';
    fprintf(fp, "Data de diagnóstico: %s\n", paciente_covid.diag);
    printf(" Digite as comorbidades (caso paciente não possua, digite n: ");
    fgets(paciente_covid.comor, 100, stdin);
    paciente_covid.comor[strlen(paciente_covid.comor) - 1] = '\0';
    fprintf(fp, "Comorbidades %s\n", paciente_covid.comor);
    printf(" Digite o ano de nascimento com 4 digitos: ");
    scanf("%d",&paciente_covid.niverano);
    printf(" Digite o número do mês de nascimento com dois digitos: ");
    scanf("%d",&paciente_covid.nivermes);
    printf(" Digite o dia de nascimento com 2 digitos: ");
    scanf("%d",&paciente_covid.niverdia);
    fprintf(fp, "Data de Nascimento: %d/%d/%d\n", paciente_covid.niverdia, paciente_covid.nivermes, paciente_covid.niverano );
    fclose(fp);

    struct tm dataAtual = pegarDataSistema();

    struct tm dataNascimento = pegarDataSistema();
    dataNascimento.tm_mday = paciente_covid.niverdia;
    dataNascimento.tm_mon = paciente_covid.nivermes;
    dataNascimento.tm_year = paciente_covid.niverano;

    int idade = calcularIdade(&dataAtual, &dataNascimento);

    if (idade<=65 && strcmp(paciente_covid.comor,"n")==0)
    {
    printf("\nPaciente possui %d anos de idade. \n", idade);
    }
    if (idade<=65 && !strcmp(paciente_covid.comor,"n")==0)
    {
    printf("\nPaciente possui %d anos de idade e as seguintes comorbidades: %s\n", idade, paciente_covid.comor);
    }
    if (idade>65 && strcmp(paciente_covid.comor,"n")==0)
        {
    printf("\nPaciente possui %d anos de idade.\nGrupo de risco.\nNão possui comorbidades.\n", idade, paciente_covid.comor);
    fprintf(fr, "CEP: %s\nIdade: %s", paciente_covid.cep, idade);
    }
    fclose(fr);
    if (idade>65 && !strcmp(paciente_covid.comor,"n")==0)
    {
    printf("\nPaciente possui %d anos de idade.\nGrupo de risco.\nNão possui comorbidades.\n", idade, paciente_covid.comor);
    fprintf(fr, "CEP: %s\nIdade: %s", paciente_covid.cep, idade);
    }
    fclose(fr);




    return (0);
}

 

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

  • Solução

Poste algo que alguém possa compilar e testar, quando for o caso de um programa e não uma dúvida conceitual.

 

Seu programa não está bom. Vai dar muito trabalho assim.

  • Use funções e agrupe seus dados em estruturas mais expressivas.
  • Um cadastro tem itens. Um certo número de itens. Então crie uma estrutura para os pacientes, e uma estrutura para o cadastro onde tem pacientes dentro. 
  • Use argumentos para suas funções e passe os endereços dessas estruturas para as funções.
  • Processe os dados na memória. Leia no início, grave no final. 

Em especial se está começando não grave sobre seus próprios dados no disco. Se der um erro vai ficar sem nada.

  • Curtir 3
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...