[AJUDA] guardar string em estrutura do C

wiz_pedro

Membro
Boas,

Estou aqui com um dilema>( !!!
Num trabalho em C, preciso de dada uma string guardar as suas componentes numa estrutura do tipo:
----------------------------
typedef struct sObj {
int num;
char frase[100][100];
}
----------------------------
...em que:
"num" -> representa o numero de palavras da frase
"frase" -> é uma matriz na qual vou guardar em cada linha uma palavra.

O problema é k por vezes as palavras estão separadas por ' ' (espaços) ou por ',' (virgulas).


Não estou a conseguir fazer isto... :(
Alguma ideia de como o fazer?

Agradeço desde já toda a ajuda que possa vir a ter.
 
Usa um tokenizer com espaços e virgulas como delimitadores.
man strtok ou google "man strtok". (ha uma versão segura mas não me lembro qual é o nome da função).
 
Ou seja, no trabalho tens que analisar aquando da ocorrência de uma mudança de linha causada por um "\n" (new line)?

Se for esse o caso, identificas o caracter da string na posição e comparas se é algum dos caracteres que fazem parte de por exemplo, critérios guardados numa string. Ou simplesmente fazes 2 "if" e comparas com ',' e ' '.

Enquanto não atingires um "\n", comparas o caracter na posição e se este for um espaço ou uma virgula, fazes o incremento do numero de palavras. Hás de reparar que a contagem das palavras também pode ser contada consoante o numero de espaços. Mas terás também que verificar a condição que depois de uma virgula, pode existir um espaço. Isto para a contagem.

Podes depois é que quando encontras um "\n", fazes algo assim:

Código:
[b]Algoritmo[/b]
 
...
 
Se caracter na posicao [i] == "\n"
    Mudar de linha frase[i][j] => incrementando o [j] se não estou em erro
 
...

Espero ter dado umas luzes :001:
 
Última edição:
wiz_pedro disse:
Boas,

Estou aqui com um dilema>( !!!
Num trabalho em C, preciso de dada uma string guardar as suas componentes numa estrutura do tipo:
----------------------------
typedef struct sObj {
int num;
char frase[100][100];
}
----------------------------
...em que:
"num" -> representa o numero de palavras da frase
"frase" -> é uma matriz na qual vou guardar em cada linha uma palavra.

O problema é k por vezes as palavras estão separadas por ' ' (espaços) ou por ',' (virgulas).


Não estou a conseguir fazer isto... :(
Alguma ideia de como o fazer?

Agradeço desde já toda a ajuda que possa vir a ter.


Código:
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="toda a gente manda bitaites e ninguem resolve problema nenhum.";
  char delimiters[] = " ,;"; // Separadores ...
  char * pch;
  printf ("Separar a string  \"%s\" em tokens:\n",str);
  pch = strtok (str,delimiters);
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, delimiters);
  }
  return 0;
}

Espero ter ajudado.
/Ing
 
Problema Resolvido

Brigado a todos...ja consegui!!!

Inicialmente estava a usar o strtok e o strsep...

Mas acabei por fazer eu uma função que fizesse o k eu keria usando ciclos for condicionados (foi como reinventar a roda)
:-D

Mas bem, obrigado a todos pela ajuda!!
 
Back
Topo