Olá meus casas, estou desenvolvendo um projeto para a facul em C de um programa gerencial, e uma das funções a serem aplicadas é registrar clientes/funcionários e cada um ter um id que é registrado no txt e deve ser automaticamente ao registrar uma nova pessoa. Tentei de alguns jeitos e talvez a forma mais simples para minha cabeça limitada seja contar quantas vezes o "ID cliente" aparece para assim atualizar o contador. Mas preciso ajuda para tal. Por enquanto eu escrevi apenas o código abaixo para ler todas as palavras de um arquivo, mas preciso de ajuda para ler apenas o ID cliente. Vou deixar aqui o código usado para registrar e o para ler as palavras. Aceito com muito agrado outras maneiras de fazer essas funções e críticas fortes e construtivas. Muito obrigado. (O contadoClientes só funciona em uma sessão, então se o programa for resetado ele começa do 1 novamente).
void cadastra_clientes() {
setlocale(LC_ALL,"portuguese");
char nome_cliente[20];
char c, letra = '\n';
int vezes;
int opc_cadastro;
if(contadorClientes < maxClientes){
do{
FILE *arq = fopen("arquivo1.txt","w");
if(arq == NULL){
printf("\nErro: não foi possível abrir o arquivo.");
}else{
system("cls");
printf("CADASTRO DE CLIENTES\n");
printf("------------------\n\n");
while(fscanf(arq, "%d", contadorClientes) != EOF) {
printf("Cliente %d:\n\n", contadorClientes++);
fprintf(arq, "\nCliente %d:\n\n", contadorClientes++);}
fflush(stdin);
printf("\nDigite o nome do cliente: ");
gets(clientes[contadorClientes].nome_cliente);
fputs(clientes[contadorClientes].nome_cliente, arq);
fprintf(arq, "\n");
fflush(stdin);
printf("\nDigite o email do cliente: ");
gets(clientes[contadorClientes].email_cliente);
fputs(clientes[contadorClientes].email_cliente, arq);
fprintf(arq, "\n");
fflush(stdin);
printf("\nDigite o CPF ou CNPJ do cliente: ");
gets(clientes[contadorClientes].cpf_cliente);
fputs(clientes[contadorClientes].cpf_cliente, arq);
fprintf(arq, "\n");
fflush(stdin);
printf("\nDigite o telefone do cliente: ");
gets(clientes[contadorClientes].tel_cliente);
fputs(clientes[contadorClientes].tel_cliente, arq);
fprintf(arq, "\n");
}
fprintf(arq,"\n------------------------------------------------------------\n\n");
printf("\n\nCliente %d cadastrado com sucesso!",contadorClientes+1);
fclose(arq);
contadorClientes++;
printf("\n\nDeseja cadastrar mais um registro? 1-Sim/2-Não\n");
scanf("%d", &opc_cadastro);
if(opc_cadastro==2){
menu_principal_vendas();
}
if(contadorClientes == maxClientes){
printf("\n\n A capacidade de registros de alunos esgotou.");
system("cls");
system("exit");
}
}while(opc_cadastro == 1 && contadorClientes < maxClientes);
}else{
printf("\n\n A capacidade de registros de alunos esgotou.");
system("cls");
}
}
void ler(){
FILE *fp = fopen ("arquivo2.txt","r");
if (fp == NULL) {
//Sai do programa caso o arquivo não tenha sido aberto
printf("Erro ao tentar abrir o arquivo.");
} else {
int ch = 0;
int linhas = 0;
linhas++;
//Efetua a contagem de linhas lendo o arquivo e procurando a quebra de linha
while (!feof(fp)) {
ch = fgetc(fp);
if (ch == '\n') {
linhas++;
}
}
//Fecha o arquivo
fclose(fp);
//Exibe a quantidade de linhas
printf("Quantidade de linhas: %d\n",linhas);
}
}