Duvida em C!, dados de ficheiros para array!
_DRC_
Posted: May 21 2006, 11:26 PM


Newbie


Group: Members
Posts: 3
Member No.: 19
Joined: 1-April 06



Boas ppl!
Estou a fazer um programa, em c, que carrega todos os dados de um ficheiro para um array de estruturas.
Depois os dados são geridos no array, mas o problema está em saber o número de dados no ficheiro para poder definir o tamanho do array.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define TAM 50

// ...::: criação de um novo tipo de dados :::...
typedef struct{
char nome[TAM];
int num;
}tdados;
/*<------------------------------------------------------------>*/

// ...::: declaração de variaveis/ficheiro globais :::...
FILE *fp;
int max=0;
tdados alunos[1000000];
/*<------------------------------------------------------------>*/

// ...::: abertura do ficheiro para leitura e escrita,e carregamento do ficheiro para um array :::...
int abir(){
int i=0,j=0;
char ch,num2[TAM];
if(NULL!=(fp=fopen("dados.txt","a+"))){
while((num2[j]=fgetc(fp))!=EOF){
do{
j++;
}while((num2[j]=fgetc(fp))!='\n');
alunos[i].num=atoi(num2); // atoi faz a conversão de texto para inteiro
j=0;
while((ch=fgetc(fp))!='\n'){
alunos[i].nome[j]=ch;
j++;
}
j=0;
i++;
}
}
max=i;//guarda o numero de registos
fcloseall();
if(NULL==(fp=fopen("dados.txt","w+")))return(1);
return(0);
}
/*<------------------------------------------------------------>*/

//...::: Armazenamento dos dados no ficheiro e fecho do proprio :::...
void sair(){
int i,j=0;
for(i=0;i<max;i++){
fprintf(fp,"%d",alunos[i].num);
fprintf(fp,"%c",'\n');
j=0;
do{
fprintf(fp,"%c",alunos[i].nome[j]);
j++;
}while(alunos[i].nome[j]!='\0');
fprintf(fp,"%c",'\n');
}
flushall();
fcloseall();
}
/*<------------------------------------------------------------>*/

inté, fiquem bem! smile.gif
Top
« Next Oldest | Linguagens de Programação | Next Newest »


Topic Options



Hosted for free by InvisionFree (Terms of Use: Updated 7/7/05) | Powered by Invision Power Board v1.3 Final © 2003 IPS, Inc.
Page creation time: 0.0623 seconds | Archive