Como criar um vetor de strings a partir de um arquivo?

1. Como criar um vetor de strings a partir de um arquivo?

Newton Teixeira
Newtonjr.

(usa CentOS)

Enviado em 26/09/2013 - 17:48h

Olá comunidade, estou com a seguinte necessidade (LINGUAGEM C).

Eis os seguintes trechos de código de um programa em C que roda em um servidor:

#define N_LIGACOES 10

char *Ligacoes[] = {"PF_LSC","AC_LSC","CH_LSC","IZ_LSC","LD_LSC",
"LT_LSC","MI_LSC","PD_LSC","PR_LSC","SLI_LSC"};

char *Siglas_Ligacoes[] = {"PF","AC","CH","IZ","LD","LT","MR","PD","PR","LI"};

------------------------------------------------------------------------------

Por motivos de manutenção, preciso que as "strings" desses vetores sejam obtidas via arquivo. Em determinado path haverá um arquivo LISTA_LIGACOES.txt, no seguinte formato:

PF PF_LSC
AC AC_LSC
CH CH_LSC
IZ IZ_LSC
LD LD_LSC
LT LT_LSC
MR MI_LSC
PD PD_LSC
PR PR_LSC
LI SLI_LSC

Tenho que ler essas informações do arquivo e popular os vetores Ligacoes e Siglas_Ligacoes dinamicamente. Lembrando que a qualquer dia, o número de ligações pode aumentar ou diminuir e tal fato tem que ser transparente para o programa.


Preciso saber:

1) Como saber quantas ligações existem em tal arquivo (N_LIGACOES);
2) Como alocar o espaço nos vetores "Ligacoes" e "Siglas_Ligacoes" de acordo com N_LIGACOES;
3) Atribuir os "valores" nos seus respectivos vetores.

Desde já agradeço pela atenção e fico no aguardo de suas contribuições.

Att.








  


2. Buffer

Júlio Hoffimann Mendes
julio_hoffimann

(usa Ubuntu)

Enviado em 26/09/2013 - 18:25h

Oi Newton,

Em C, a maneira clássica de ler strings de tamanho limitado é através de um buffer.

Veja este exemplo: http://stackoverflow.com/questions/3463426/in-c-how-should-i-read-a-text-file-and-print-all-strings

O autor utilizou 999, mas você deve colocar um número razoável como 16 para o tamanho máximo das palavras.

Abs.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts