Alocação Dinâmica?
Boas ppl!
Estou a fazer um programa que guarda os dados dos alunos em ficheiro, os dados são carregados para um array de estruturas ao iniciar o programa, mas o problema está na impossibilidade de saber quantos alunos estão no ficheiro para definir o tamanho do array.
Já tentei assim:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>//para o uso de system("cls")
#include <conio.h> //para o uso do getch()
#define TAM 50
// ...::: Criação de um novo tipo de dados :::...
typedef struct{
char nome[TAM];
int num;
}tdados;
/<------------------------------------------------------------>/
// ...::: Declaração de variáveis/ficheiro globais :::...
FILE *fp;
int max=0;
tdados *alunos;
/<------------------------------------------------------------>/
// ...::: abertura do ficheiro para leitura e escrita :::...
int abir(){
int i=0,j=0;
char ch,num2[TAM];
if(NULL!=(fp=fopen("dados.txt","r"))){
while((num2[j]=fgetc(fp))!=EOF){
do{
j++;
}while((num2[j]=fgetc(fp))!='\n');
alunos*.num=atoi(num2);*
j=0;
while((ch=fgetc(fp))!='\n'){
* alunos**.nome[j]=ch;*
j++;
}
j=0;
i++;
if(alunos=realloc(alunos,1+i)==NULL){
printf("Erro de alocação dinamica");
exit(3);
}
}
}
if(NULL==(fp=fopen("dados.txt","w"))){
printf("Erro\n");
exit(2);
}
max=i; //guarda o numero de registos e a proxima posição livre
fcloseall();
if(NULL==(fp=fopen("dados.txt","w")))return(1);
return(0);
}
/<------------------------------------------------------------>/
//...::: Armazenamento dos dados no ficheiro e fecho do próprio :::...
void sair(){
int i,j=0;
for(i=0;i<max;i++){
* fprintf(fp,"%d",alunos**.num);*
fprintf(fp,"%c",'\n');
j=0;
do{
* fprintf(fp,"%c",alunos**.nome[j]);*
j++;
* }while(alunos**.nome[j]!='\0');*
fprintf(fp,"%c",'\n');
}
flushall();
fcloseall();
free(alunos);
}
só esta o numero e nome dos alunos no array para não saturar o post de código.
ñ faço a mínima do que esta mal!!!
Desculpem qualquer coisa!
Inté,fiquem bem. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Discussão (1)
Carregando comentários...