c – Como remover apenas parte de um arquivo?

Criei um programa que tem entre suas funções o cadastro e cancelamento de consultas em uma clínica médica, mas não sei como fazer a parte do cancelamento sem excluir todo o arquivo com a função remove.

Sou novo em fóruns, peço perdão se a pergunta não estiver formatada corretamente.

Segue o código: #include <stdio.h> #include <stdlib.h> #include <string.h>

int main() { printf(“Bem vindo(a) ao sistemannPor favor, entre com seu Login e Senha para ter acesso ao sistema.nn”); login(); }

void imprimirInicio() { int n;

system(“cls”);

printf(“Bem vindo(a) ao Inicio!n”);
printf(“1 – Cadastrosn2 – Reclamações e elogiosn3 – Cancelamentosn4 – Relatóriosn5 – Consultar Agendamento(s)n6 – Sair”);
printf(“nnEscolha a opção desejada:”);
scanf(“%d”, &n);
switch(n)
{
case 1:
system(“cls”);
imprimirCadastro();
break;

case 2:
    system("cls");
    imprimirElogiosReclamacao();
break;

case 4:
    system("cls");
    imprimirRelatorios();
    break;

case 5:
    system("cls");
    consultaAgendamento();
    break;

case 6:
    return;
    break;

default:
    printf("Opção Inexistente, tente outra.");
    getch();
    system("cls");
    imprimirCadastro();
    break;

}
} // *********************************************** TELAS CADASTRO **************************************************** void imprimirCadastro() { int n; system(“cls”); printf(“Cadastrosn”); printf(“1 – Pacienten2 – Agendamenton3 – Médicon4 – Funcionárion5 – Inicio”); printf(“nnEscolha a opção desejada:”); scanf(“%d”, &n);

switch(n)
{
case 1:
system(“cls”);
cadastroPaciente();
break;

case 2:
    system("cls");
    cadastroAgendamento();
    break;

case 3:
    system("cls");
    cadastroMedico();
    break;

case 4:
    system("cls");
    cadastroFuncionario();
    break;

case 5:
    system("cls");
    imprimirInicio();
    break;

default:
    printf("Opção Inexistente, tente outra.");
    getch();
    system("cls");
    imprimirCadastro();
    break;

}
}

void cadastroPaciente() { FILE *arqPaci; char nomePaci(69); char dtNascPaci(69); char sex(2); char convenio(69); char cpf(15); int telPaci; int unidadePaci; int yn;

yn = 1;

while(yn == 1)
{
arqPaci = fopen(“cadastroPaciente.txt”, “a”);
if(arqPaci == NULL)
{
printf(“Erro na abertura do arquivo!”);
}
else
{
setbuf(stdin, NULL);
system(“cls”);
printf(“Cadastro de Paciente.nn”);

        printf("Nome: ");
        scanf("%(^n)s", nomePaci);
        tratamentoEspaco(nomePaci, ' ', '_');

        printf("nData de Nascimento: ");
        scanf("%s", dtNascPaci);

        printf("nSexo(F/M/O): ");
        scanf("%s", sex);

        setbuf(stdin, NULL);
        printf("nConvenio: ");
        scanf("%(^n)s", convenio);
        tratamentoEspaco(convenio, ' ', '_');

        printf("nCPF do Paciente: ");
        scanf("%s", &cpf);

        printf("nTelefone: ");
        scanf("%d", &telPaci);

        printf("nUnidade: ");
        scanf("%d", &unidadePaci);

        fprintf(arqPaci, "%s %s %s %s %s %d %dn", nomePaci, dtNascPaci, sex, convenio, cpf, telPaci, unidadePaci);
        fclose(arqPaci);
}
system("cls");
printf("Deseja Cadastrar outro? (1/0)");
scanf("%d", &yn);

}
system(“cls”);
printf(“Paciente(s) cadastrado(s) com sucesso!”);
getch();
imprimirCadastro();
}

void cadastroAgendamento() { FILE *arqAgenda; char nomePaciAge(69); char dtAge(69); char hrAge(8); char exameAge(69); float valor = 1.00; int uniAge; char dtDoAge(10); int yn = 1;

while(yn == 1)
{
arqAgenda = fopen(“cadastroAgenda.txt”, “a”);
if(arqAgenda == NULL)
{
printf(“Erro na abertura do arquivo!”);
}
else
{
setbuf(stdin, NULL);
system(“cls”);
printf(“Cadastro de Agendamentos.nn”);

    printf("Nome do Paciente: ");
    scanf("%(^n)s", nomePaciAge);
    tratamentoEspaco(nomePaciAge, ' ', '_');

    printf("Data do agendamento: ");
    scanf("%s", dtAge);

    printf("Hora do agendamento: ");
    scanf("%s", hrAge);

    setbuf(stdin, NULL);
    printf("Exame agendado: ");
    scanf("%(^n)s", exameAge);
    tratamentoEspaco(exameAge, ' ', '_');

    printf("Unidade agendada: ");
    scanf("%d", &uniAge);

    printf("Digite o valor do agendamento: ");
    scanf("%f", &valor);

    printf("Data atual: ");
    scanf("%s", &dtDoAge);

    fprintf(arqAgenda, "%s %s %s %s %d %f %sn", nomePaciAge, dtAge, hrAge, exameAge, uniAge, valor, dtDoAge);
    fclose(arqAgenda);
}
system("cls");
printf("Deseja Cadastrar outro? (1/0)");
scanf("%d", &yn);

}
printf(“nnAgendamento(s) salvo(s) com sucesso!”);
getch();
imprimirCadastro();
}

void cadastroMedico() { FILE *arqMedico; char nomeMedico(69); char crm(10); int yn;

yn = 1;

while(yn == 1)
{
arqMedico = fopen(“cadastroMedico.txt”, “a”);
if(arqMedico == NULL)
{
printf(“Erro na abertura do arquivo!”);

}
else{
    setbuf(stdin, NULL);
    system("cls");
    printf("Cadastro de Medico.nn");

    printf("Nome do medico: ");
    scanf("%(^n)s", nomeMedico);
    setbuf(stdin, NULL);

    tratamentoEspaco(nomeMedico, ' ', '_');

    printf("nCRM do medico: ");
    scanf("%s", crm);

    fprintf(arqMedico, "%s, %sn", nomeMedico, crm);
    fclose(arqMedico);
}
    system("cls");
    printf("Deseja Cadastrar outro? (1/0)");
    scanf("%d", &yn);

}
printf(“nnMedico(s) salvo(s) com sucesso!”);
getch();
imprimirCadastro();
}

void cadastroFuncionario() { FILE *arqFunc; char nomeFunc(69); char dtNascFunc(69); char rgFunc(10); char loginFunc(50); char senhaFunc(50); char sexFunc(2); char telFunc(20); int unidadeFunc;

int yn = 1;
printf(“Cadastro de Funcionario.nn”);

while (yn == 1){
arqFunc = fopen(“cadastroFunc.txt”, “a”);
if(arqFunc == NULL)
{
printf(“Erro na abertura do arquivo!”);

}
else
{
setbuf(stdin, NULL);
printf(“Nome: “);
scanf(“%(^n)s”, nomeFunc);
setbuf(stdin, NULL);
tratamentoEspaco(nomeFunc, ‘ ‘, ‘_’);

printf("nData de Nascimento: ");
scanf("%s", dtNascFunc);

printf("nRG do Funcionario: ");
scanf("%s", rgFunc);

printf("nSexo (F/M/O): ");
scanf("%s", sexFunc);

printf("nTelefone: ");
scanf("%s", telFunc);

printf("nUnidade: ");
scanf("%d", &unidadeFunc);

printf("nLogin: ");
scanf("%s", loginFunc);

printf("nSenha: ");
scanf("%s", senhaFunc);

fprintf(arqFunc, "%s %s %s %s %s %d %s %sn", nomeFunc, dtNascFunc, rgFunc, sexFunc, telFunc, unidadeFunc, loginFunc, senhaFunc);
fclose(arqFunc);

}
system(“cls”);
printf(“Deseja Cadastrar outro? (1/0)”);
scanf(“%d”, &yn);
}
printf(“nnFuncionario(s) salvo(s) com sucesso!”);
getch();
imprimirCadastro();
} // ******************************************************** FIM TELAS DE CADASTRO **********************************************

// ******************************************************** TELA DE ELOGIOS E RECLAMACOES ************************************** void imprimirElogiosReclamacao() { FILE *arqElogio; FILE *arqReclamacao; char nomePaciente(100); char elogio(50); char reclamacao(100); char data(20); int opc; int yn = 1; printf(“nDigite 1 – Elogios ou 2 – Reclamacoes: “); scanf(“%d”, &opc);

if(opc == 1)
{
while (yn == 1)
{
arqElogio = fopen(“cadastroElogio.txt”, “a”);
if (arqElogio == NULL)
{
printf(“Erro na abertura do arquivo!”);
}
else{
setbuf(stdin, NULL);
system(“cls”);
printf(“Nome do paciente: “);
scanf(“%(^n)s”, nomePaciente);
tratamentoEspaco(nomePaciente, ‘ ‘, ‘_’);

            printf("Data do Elogio: ");
            scanf("%s", data);

            setbuf(stdin, NULL);
            printf("nDigite o elogio: ");
            scanf("%(^n)s", elogio);
            tratamentoEspaco(elogio, ' ', '_');

            fprintf(arqElogio, "%s, %s, %sn", nomePaciente, data, elogio);
            fclose(arqElogio);
            }
                system("cls");
                printf("Deseja Cadastrar outro? (1/0)");
                scanf("%d", &yn);

            }

}
else
{
while (yn == 1)
{
arqReclamacao = fopen(“cadastroReclamacao.txt”, “a”);
if (arqReclamacao == NULL)
{
printf(“Erro na abertura do arquivo!”);
}
else{
setbuf(stdin, NULL);
system(“cls”);
printf(“Nome do paciente: “);
scanf(“%(^n)s”, nomePaciente);
tratamentoEspaco(nomePaciente, ‘ ‘, ‘_’);

            printf("nData da Reclamacao: ");
            scanf("%s", data);

            setbuf(stdin, NULL);
            printf("nDigite a reclamacao: ");
            scanf("%(^n)s", reclamacao);
            tratamentoEspaco(reclamacao, ' ', '_');

            fprintf(arqReclamacao, "%s, %s, %sn", nomePaciente, data, reclamacao);
            fclose(arqReclamacao);
            }
                system("cls");
                printf("Deseja Cadastrar outro? (1/0)");
                scanf("%d", &yn);

            }
}

printf(“nnElogio(s) ou Reclamacao salvo(s) com sucesso!”);
getch();
imprimirCadastro();
}

// ************************************************* FIM TELA DE ELOGIOS E RECLAMACOES ******************************************

// ************************************************* TELA DE CONSULTA ***********************************************************

void consultaAgendamento() { FILE *arqPaci; char nomePaci(69); char dtNascPaci(69); char sex(2); char convenio(69); char cpf(15); int telPaci; int unidadePaci;

FILE *arqAgenda;
char nomePaciAge(69);
char dtAge(69);
char hrAge(8);
char exameAge(69);
float valor = 1.00;
int uniAge;
char dtDoAge(10);

char cpfDig(15);
char nomeDig(250);
char dtDig(69);
int opc;

system(“cls”);
printf(“Deseja Pesquisar por CPF (1) por Nome (2) ou por Data de Nascimento (3): “);
scanf(“%d”, &opc);

switch(opc)
{
case 1 :

    printf("nnDigite o CPF: ");
    scanf("%s", &cpfDig);


    arqPaci = fopen("cadastroPaciente.txt", "r");
    arqAgenda = fopen("cadastroAgenda.txt", "r");
    if(arqAgenda == NULL || arqPaci == NULL)
    {
        printf("Erro na abertura do arquivo!");
    }
    while(!feof(arqPaci) || !feof(arqAgenda))
    {
            setbuf(stdin, NULL);
            fscanf(arqAgenda, "%s %s %s %s %d %f %sn", &nomePaciAge, &dtAge, &hrAge, &exameAge, &uniAge, &valor, &dtDoAge);
            fscanf(arqPaci, "%s %s %s %s %s %d %dn", &nomePaci, &dtNascPaci, &sex, &convenio, &cpf, &telPaci, &unidadePaci);


            if(strcmp(cpf, cpfDig) == 0 && strcmp(nomePaci, nomePaciAge) == 0)
            {
                tratamentoEspaco(nomePaciAge, '_', ' ');
                printf("Nome do Paciente: %sn", nomePaciAge);
                printf("Data de Nascimento: %sn", dtNascPaci);
                printf("Data do Agendamento: %sn", dtAge);
                printf("Hora do Agendamento: %sn", hrAge);
                printf("Exame Agendado: %sn", exameAge);
                printf("Unidade Agendada: %dn", uniAge);
                printf("Data que foi agendada: %snn", dtDoAge);
            }

    }
    fclose(arqAgenda);
    fclose(arqPaci);
    break;

case 2:
    setbuf(stdin, NULL);
    printf("nnDigite o Nome: ");
    scanf("%(^n)s", nomeDig);
    tratamentoEspaco(nomeDig, ' ', '_');


    arqPaci = fopen("cadastroPaciente.txt", "r");
    arqAgenda = fopen("cadastroAgenda.txt", "r");
    if(arqAgenda == NULL || arqPaci == NULL)
    {
        printf("Erro na abertura do arquivo!");
    }
    while(!feof(arqPaci) || !feof(arqAgenda))
    {
            setbuf(stdin, NULL);

            fscanf(arqAgenda, "%s %s %s %s %d %f %sn", &nomePaciAge, &dtAge, &hrAge, &exameAge, &uniAge, &valor, &dtDoAge);
            fscanf(arqPaci, "%s %s %s %s %s %d %dn", &nomePaci, &dtNascPaci, &sex, &convenio, &cpf, &telPaci, &unidadePaci);

            if( strcmp(nomePaci, nomeDig) == 0 && strcmp(nomePaciAge, nomeDig) == 0)
            {
                tratamentoEspaco(nomePaciAge, '_', ' ');
                printf("Nome do Paciente: %sn", nomePaciAge);
                printf("Data de Nascimento: %sn", dtNascPaci);
                printf("Data do Agendamento: %sn", dtAge);
                printf("Hora do Agendamento: %sn", hrAge);
                printf("Exame Agendado: %sn", exameAge);
                printf("Unidade Agendada: %dn", uniAge);
                printf("Data que foi agendada: %snn", dtDoAge);
            }

    }

    fclose(arqAgenda);
    fclose(arqPaci);

    break;

case 3:

    setbuf(stdin, NULL);
    printf("nnDigite a Data de Nascimento: ");
    scanf("%s", dtDig);

    arqPaci = fopen("cadastroPaciente.txt", "r");
    arqAgenda = fopen("cadastroAgenda.txt", "r");
    if(arqAgenda == NULL || arqPaci == NULL)
    {
        printf("Erro na abertura do arquivo!");
    }
    while(!feof(arqPaci) || !feof(arqAgenda))
    {
            setbuf(stdin, NULL);

            fscanf(arqAgenda, "%s %s %s %s %d %f %sn", &nomePaciAge, &dtAge, &hrAge, &exameAge, &uniAge, &valor, &dtDoAge);
            fscanf(arqPaci, "%s %s %s %s %s %d %dn", &nomePaci, &dtNascPaci, &sex, &convenio, &cpf, &telPaci, &unidadePaci);

            if(strcmp(dtDig, dtNascPaci) == 0)
            {
                tratamentoEspaco(nomePaciAge, '_', ' ');
                printf("Nome do Paciente: %sn", nomePaciAge);
                printf("Data de Nascimento: %sn", dtNascPaci);
                printf("Data do Agendamento: %sn", dtAge);
                printf("Hora do Agendamento: %sn", hrAge);
                printf("Exame Agendado: %sn", exameAge);
                printf("Unidade Agendada: %dn", uniAge);
                printf("Data que foi agendada: %snn", dtDoAge);
            }

    }

    fclose(arqAgenda);
    fclose(arqPaci);

    break;

}
}

// ******************************************************* FIM TELA DE CONSULTAS ***********************************************

// ************************************************* TELAS DE RELATÓRIOS ********************************************************

void imprimirRelatorios() { int n;

system(“cls”);
printf(“Selecione o relatorio que desejann1 – Pacientes por unidade da reden2 – Unidade que mais atenden3 – Total Diario por unidaden4 – Total mensal por Unidaden5 – Total da rede”);
printf(“nnOpcao Escolhida: “);
scanf(“%d”, &n);

switch(n)
{
case 1:
system(“cls”);
relPacUnidade();
break;

case 2:
    system("cls");
    relUnidadeMaisAtende();
    break;

case 3:
    system("cls");
    relTotalDiario();
    break;

}
}

void relPacUnidade() { FILE *arqPaci; char nomePaci(69); char dtNascPaci(69); char sex(2); char convenio(69); int telPaci; int unidadePaci;

int unidadeDig;
int total = 0;

printf(“Digite a Unidade em que deseja o relatorio de pacientes: “);
scanf(“%d”, &unidadeDig);

arqPaci = fopen(“cadastroPaciente.txt”, “r”);

if(arqPaci == NULL)
{
printf(“Erro na abertura do arquivo!”);
}

while(!feof(arqPaci))
{
setbuf(stdin, NULL);
fscanf(arqPaci, “%s %s %s %s %d %dn”, &nomePaci, &dtNascPaci, &sex, &convenio, &telPaci, &unidadePaci);
if(unidadeDig == unidadePaci)
{
printf(“Nome: %s – “, nomePaci);
printf(“Data de Nascimento: %s – “, dtNascPaci);
printf(“Sexo: %s – “, sex);
printf(“Convenio: %s – “, convenio);
printf(“Telefone: %d – “, telPaci);
printf(“Unidade Cadastrado: %dnn”, unidadePaci);

    total++;
}

}
printf(“Total da Unidade %d e: %dn”, unidadeDig, total);
getch();
imprimirRelatorios();
}

void relUnidadeMaisAtende() { int n;

printf(“Deseja gerar o relatorio por unidade que mais atende em relacao a Paciente (1)n”);
printf(“Ou deseja gerar o relatio por unidade que mais atende em relacao a Agendamentos (2)nn”);
printf(“Opcao desejada: “);
scanf(“%d”, &n);

if(n == 1)
{
FILE *arqPaci;
char nomePaci(69);
char dtNascPaci(69);
char sex(2);
char convenio(69);
int telPaci;
int unidadePaci;

int uni1 = 0;
int uni2 = 0;
int uni3 = 0;

arqPaci = fopen("cadastroPaciente.txt", "r");

if(arqPaci == NULL)
{
    printf("Erro na abertura do arquivo!");
}

while(!feof(arqPaci))
{
    setbuf(stdin, NULL);
    fscanf(arqPaci, "%s %s %s %s %d %dn", &nomePaci, &dtNascPaci, &sex, &convenio, &telPaci, &unidadePaci);

    if(unidadePaci == 1)
    {
        uni1++;
    }
    if(unidadePaci == 2)
    {
        uni2++;
    }
    if(unidadePaci == 3)
    {
        uni3++;
    }
}

if(uni1 >= uni2 && uni1 >= uni3)
{
    printf("Unidade que mais atende e 1 com %d pacientes cadastrados", uni1);
}
else
{
    if(uni2 >= uni1 && uni2 >= uni3)
    {
        printf("Unidade que mais atende e 2 com %d pacientes cadastrados", uni2);
    }
    else
    {
        if(uni3 >= uni1 && uni3 >= uni2)
        {
            printf("Unidade que mais atende e 3 com %d pacientes cadastradosnn", uni3);;
        }
    }
}
fclose(arqPaci);
getch();
imprimirRelatorios();

}
if(n == 2)
{
FILE *arqAgenda;
char nomePaciAge(69);
char dtAge(69);
char hrAge(8);
char exameAge(69);
int uniAge;
float valor;
char dtDoAge(10);

int uni1 = 0;
int uni2 = 0;
int uni3 = 0;

arqAgenda = fopen("cadastroAgenda.txt", "r");

if(arqAgenda == NULL)
{
    printf("Erro na abertura do arquivo!");
}

while(!feof(arqAgenda))
{
    setbuf(stdin, NULL);
    fscanf(arqAgenda, "%s %s %s %s %d %f %sn", &nomePaciAge, &dtAge, &hrAge, &exameAge, &uniAge, &valor, &dtDoAge);

    if(uniAge == 1)
    {
        uni1++;
    }
    if(uniAge == 2)
    {
        uni2++;
    }
    if(uniAge == 3)
    {
        uni3++;
    }
}

if(uni1 >= uni2 && uni1 >= uni3)
{
    printf("Unidade que mais atende e 1 com %d Agendamentos cadastrados", uni1);
}
else
{
    if(uni2 >= uni1 && uni2 >= uni3)
    {
        printf("Unidade que mais atende e 2 com %d Agendamentos cadastrados", uni2);
    }
    else
    {
        if(uni3 >= uni1 && uni3 >= uni2)
        {
            printf("Unidade que mais atende e 3 com %d Agendamentos cadastradosnn", uni3);;
        }
    }
}
fclose(arqAgenda);
getch();
imprimirRelatorios();

}
}

void relTotalDiario() { /*time_t data_tempo; time(&data_tempo); struct tm *data = localtime(&data_tempo); struct tm tempo = localtime(&data_tempo);/

FILE *arqAgenda;
char nomePaciAge(69);
char dtAge(69);
char hrAge(8);
char exameAge(69);
int uniAge;
float valor;
char dtDoAge(10);
float faturamentoDiario = 0;

char dtDig(10);

arqAgenda = fopen(“cadastroAgenda.txt”, “r”);

printf(“Digite a data que gostaria: “);
scanf(“%s”, &dtDig);

if(arqAgenda == NULL)
{
printf(“Erro na abertura do arquivo!”);
}

while(!feof(arqAgenda))
{
setbuf(stdin, NULL);
fscanf(arqAgenda, “%s %s %s %s %d %f %sn”, &nomePaciAge, &dtAge, &hrAge, &exameAge, &uniAge, &valor, &dtDoAge);
if(strcmp(dtDoAge, dtDig) == 0);
{
faturamentoDiario = faturamentoDiario + valor;
}
}

printf(“No dia %s, foram faturados %.2f”, dtDig, faturamentoDiario);
getch();
imprimirRelatorios();
}

// ***************************************** FIM TELAS DE RELATORIOS ************************************************************

// ************************************************ TRATAMENTO ***********************************************************************

void tratamentoEspaco(char frase(250), char encontra, char troca) { int i;

for(i=0;i<=250;i++)
{
if(frase(i)==encontra)
{
frase(i)=troca;
}
}
}

// ************************************************ FIM TRATAMENTO *******************************************************************

// ************************************************* VALIDACAO DE LOGIN ********************************************************* void login() { FILE *arqFunc; char nome(100); char data(100); char tel(100); char sex; char rg(100); int unidade; char login(100); char senha(100); char loginDig(100); char senhaDig(100);

printf(“Login: “);
scanf(“%s”, &loginDig);

printf(“Senha: “);
scanf(“%s”, &senhaDig);

arqFunc = fopen(“cadastroFunc.txt”, “r”);

if(arqFunc == NULL)
{
printf(“Erro na abertura do arquivo!”);
}

while(!feof(arqFunc))
{
fscanf(arqFunc, “%s %s %s %s %s %d %s %sn”, &nome, &data, &rg, &sex, &tel, &unidade, &login, &senha);
if(strcmp(login, loginDig) == 0 && strcmp(senha, senhaDig) == 0)
{
imprimirInicio();
fclose(arqFunc);
break;
}
}
} // ********************************************* FIM VALIDACAO DE LOGIN *********************************************************