[ C ] - Ajuda: Ficheiro para vector

Keith

Power Member
Boa tarde.

Estou com um problema: quero ler um ficheiro, que em cada linha possui uma palavra ou frase e quero colocar, cada uma dessas linhas num vector.
Não estou a conseguir de forma nenhuma.

Deixo exemplo:
Leio o ficheiro
- Ficheiro bla.txt
-----------------------
Computador
Teclado
Rato
Monitor
Caixa de CDs
-----------------------

E escrevo para o vector
- Vector plvs
-----------------------
plvs[0] = Computador
plvs[1] = Teclado
plvs[2] = Rato
plvs[3] = Monitor
plvs[4] = Caixa de CDs
-----------------------


Espero ter-me feito entender.
Desde já, obrigado.

Keith
 
Última edição:
Mostra o código do que tens feito, sff.

Quando colocares código, toma atenção às tags de código: [code] CÓDIGO [/code]

abraços, HecKel
 
Isso é simples de resolver com um mero ciclo + função getchar(). O getchar lê-te um caracter de cada vez e vais colocando no array e depois metes como caso de paragem quando chegar ao '\n' ou EOF. Toma cuidado também para não excederes o tamanho do array... :P

Para isso ficar mesmo guardado como string, não te esqueças de meter o newline '\n' bem como o caracter terminador '\0' :)
 
Eu já não programo em C há quase 3 anos, por isso, desculpem qualquer coisinha...:-D

Código:
#define NSts 36

int LerForcaSts (int sts[NSts])
{
FILE *fp;
int i;

   fp = fopen(FORCA,"r");
   for(i=0;i<=NSts;i++)
   {
      fscanf("%s",&sts[i]);
   }
   fclose(fp);
   return 0;
}
Outra coisa: tenho uma função que recebe uma string e transforma os caracteres diferentes do espaço (" "), em "_". Se fizer o código correspondente na função main, não tenho problemas, mas se a fizer através de uma função auxilar, obtenho erros muito estranhos.

Código:
char escondeFrase (char fraseO[128])
{
char fraseC[128];
int i;

   strcpy(fraseC,fraseO);

   for(i=0;i<strlen(fraseC);i++)
   {
     if (fraseC[i] != ' ') fraseC[i] = '_';
   }
}
Se puderem ajudar, agradeço mais uma vez.
Keith
 
Bem em relação ao LerForcaSts detectei alguns erros, tens de ter atenção qd passares o sts pois terás de ter reservado espaço para o array do tipo char sts[36+1][40];

PS:Espero que o plvs que referiste seja este sts..

Código:
#define NSts 36
 
int LerForcaSts (char **sts)  /*Aqui tinhas erro, tinhas o array como int
{
   FILE *fp;
   int i;
 
   if ((fp = fopen("FORCA", "r")) == NULL) /*Aqui não sei se declaraste FORCA como 
                                                           variável global*/
      return -1;
 
   for(i=0;i<=NSts;i++)
   {
      fscanf(fp,"%s",sts[i]);
   }
 
   fclose(fp);
   return 0;
}
 
Back
Topo