alguém poderia me dar uma dica do código abaixo. Quando executo e faço todo o preenchimento do registro e dai o arquivo é gravado com mais de 1,5Gb em txt. O programa trava e o o arquivo txt fica indisponivel pois não é possivel abrir tal arquivo por possuir mais de 1,5Gb.
O que esta de errado no código.
obrigado.
#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> void Clientes(); /* definicao do tipo cliente*/ typedef struct { int codcli; char nome[100]; int cpf[11]; char endereco[30]; int telefone[10]; int idade[2]; int codcarro; }cliente; // Função de cadastro de clientes void Clientes() { system("cls"); printf("--------------------------------------------------------------------------------\n"); printf(" Cadastro de Clientes\n"); printf("--------------------------------------------------------------------------------\n"); cliente *vetclientes; // vetor de clientes int num; // numero de clientes char op; // opção de cadastro FILE *arq_cliente; // arq. de armazenamento do{ // abre o arquivo para leitura arq_cliente=fopen("Cadastro_Cliente.txt","r+b"); if(arq_cliente==NULL) { // se arquivo não existe abre para escrita arq_cliente=fopen("Cadastro_Cliente.txt","w+b"); // inicializa num de clientes com 0 num=0; }else{ //se arquivo existe le o num de clientes fread(&num,sizeof(int),1,arq_cliente); //aloca memória para os clientes vetclientes = (cliente *)malloc(sizeof(cliente)*num); // e le o vetor de clientes inteiro fread(vetclientes,sizeof(cliente),num,arq_cliente); } if(num==0) { // se n=0, aloca memoria para vetor vetclientes = (cliente *)malloc(sizeof(cliente)); }else{ // caso contrario realoca memoria para vetor vetclientes = (cliente *)realloc(vetclientes,sizeof(cliente)*(num+1)); } // cadastra novo cliente printf("\nCliente %d",vetclientes[num].codcli); //vetclientes[num].codcli = num; printf("\nNome: "); scanf("%s",vetclientes[num].nome); fflush(stdin); printf("CPF: "); scanf("%i",vetclientes[num].cpf); fflush(stdin); printf("Endereco: "); scanf("%s",vetclientes[num].endereco); fflush(stdin); printf("Telefone: "); scanf("%i",vetclientes[num].telefone); fflush(stdin); printf("Idade: "); scanf("%i",&vetclientes[num].idade); printf("codigo:", &vetclientes[num].codcli); printf("\nRegistro gravado com sucesso!\n"); // incrementa numero de clientes num++; // fecha o arquivo fclose(arq_cliente); // e em seguida reabre para posicionar no comeco arq_cliente=fopen("Cadastro_Cliente.txt","r+b"); //reescreve o numero de clientes atualizado fwrite(&num,sizeof(int),1,arq_cliente); fwrite(vetclientes,sizeof(cliente),num,arq_cliente); // e fecha o arquivo fclose(arq_cliente); //libera memoria free(vetclientes); printf("\nDeseja registrar novo Cliente?[S/N]: "); scanf("%s",op); }while((op!='n') || (op!='N')); }