Jump to content
Sign in to follow this  
msmsms

como colocar cada linha de um ficheiro num vetor em separado?

Recommended Posts

msmsms

as linhas do ficheiro têm tamanho variado

o ficheiro tem apenas como conteúdo 3 linhas, que tem de estar obrigatoriamente assim:

Idade = 15

Nome = Alvaro

Apelido = Costa

este ficheiro é apenas aberto para leitura com fopen no modo "r"

então tenho 3 variáveis declaradas no código

int idade;

char nome[10];

char apelido[10];

e tenho de ir buscar essa informação ao ficheiro e atribuir a cada uma das variáveis o seu conteúdo

eu li na internet que a função fgets() poderia ler linha por linha e colocar a informação da linha para um vetor

mas o que consigo é apenas ler a primeira linha do ficheiro que diz respeito à idade

a partir ai já não dá

com o fscanf() eu tendo colocar tudo para dentro de um vetor primeiro e ai separar a informação desse vetor

mas não consigo com esta função obter todo o conteudo do ficheiro, eu faço um while que vai desde o inicio do ficheiro ate EOF e não pega tudo

qual é a forma mais simples de fazer isto?

Edited by msmsms

Share this post


Link to post
Share on other sites
msmsms

a minha ideia era colocar cada linha para um vetor em separado

e ai buscava com alguma função no primeiro vetor digitos e convertia a string que continha digitos para inteiro e atribuía à variável (int idade)

em relação ao vetor 2 que corresponderia ao nome eu ignorava as primeiras posições que diziam respeito "Nome = " e aproveitava a string dessa posição para a frente formando um novo vetor com apenas o nome

em relação ao vetor 3 eu faria o mesmo tratamento que no vetor 2

mas o problema é que nem colocar a informação total do ficheiro para dentro de um array consigo

o ideal penso que seria colocar cada linha do ficheiro para um vetor e a partir dai eu já me safava

partilho aqui tambem o meu codigo

#include <stdio.h>
int idade;
char nome[10];
char apelido[10];
void configuracoes(){
// colocando aqui toda a informação do ficheiro
char conteudo[100];
// OU
// será possivel pegar em cada linha de um ficheiro e colocar os seus caracteres directamente para cada um destes vetores?
char linha1[10];
char linha2[10];
char linha3[10];

FILE *f = fopen("dados.txt","r");

// colocar o conteudo do ficheiro para dentro de um vetor

// testativa de colocar todo o conteudo do ficheiro para dentro de um vetor // FALHADA
int i;
for(i=0; i != EOF; i++){
 conteudo[i] = fscanf(f,"%c", conteudo);
}


//fgets(conteudo,100,f);


for(i=0; i<100; i++){
 printf("%c", conteudo[i]);
}
printf("\n");
fclose(f);
//printf("CONFIGURACAO APLICADA\n");
}
main(){
configuracoes();
return 0;
}

Share this post


Link to post
Share on other sites
HappyHippyHippo

e o pessoal sempre a complicar ...

int idade;
char nome[10];
char apelido[10];

if (fscanf(f, "Idade = %d\nNome = %10[^\n]\nApelido = %10[^\n]", &idade, nome, apelido) != 3) {
 // reading error
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
msmsms

e o pessoal sempre a complicar ...

int idade;
char nome[10];
char apelido[10];

if (fscanf(f, "Idade = %d\nNome = %10[^\n]\nApelido = %10[^\n]", &idade, nome, apelido) != 3) {
 // reading error
}

deu certo, obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.