-3

I'm trying to read strings separated by ',."/()" " \n, until EOF. I only need to read words and numbers -- that will, later, be added to a tree.

An example of input text:

Luis Vaz de Camoes Os Lusiadas

Canto Primeiro

As armas e os baroes assinalados, Que da ocidental praia Lusitana, Por mares nunca de antes navegados, Passaram ainda alem da Taprobana, Em perigos e guerras esforcados, Mais do que prometia a forca humana, E entre gente remota edificaram Novo Reino, que tanto sublimaram;

E tambem as memorias gloriosas Daqueles Reis, que foram dilatando A Fe, o Imperio, e as terras viciosas De africa e de asia andaram devastando; E aqueles, que por obras valerosas Se vao da lei da morte libertando; Cantando espalharei por toda parte, Se a tanto me ajudar o engenho e arte.

Cessem do sabio Grego e do Troiano As navegacoes grandes que fizeram; Cale-se de Alexandro e de Trajano A fama das vitorias que tiveram; Que eu canto o peito ilustre Lusitano, A quem Neptuno e Marte obedeceram: Cesse tudo o que a Musa antigua canta, Que outro valor mais alto se alevanta.

E vos, Tagides minhas, pois criado Tendes em mim um novo engenho ardente, Se sempre em verso humilde celebrado Foi de mim vosso rio alegremente, Dai-me agora um som alto e sublimado, Um estilo grandiloquo e corrente, Porque de vossas aguas, Febo ordene Que nao tenham inveja as de Hipoerene.

Dai-me uma furia grande e sonorosa, E nao de agreste avena ou frauta ruda, Mas de tuba canora e belicosa, Que o peito acende e a cor ao gesto muda; Dai-me igual canto aos feitos da famosa Gente vossa, que a Marte tanto ajuda; Que se espalhe e se cante no universo, Se tao sublime preco cabe em verso.

I need to read the words and numbers to save them in a tree.

4

1 回答 1

0

strtok should be a big help here, this is an example using most of the separators you identified:

#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="As armas e (os) baroes assinalados, Que da ocidental praia Lusitana. Por mares nunca de antes";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str,"',.\"()\n ");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, "',.\"()\n ");
  }
  return 0;
} 
于 2013-04-30T14:31:40.040 回答