如何读取由',。“/()”“\ n分隔的字符串

时间:2013-04-30 14:18:29

标签: c string get scanf

我正在尝试读取',."/()" " \n分隔的字符串,直到EOF。我只需要阅读单词和数字 - 稍后将被添加到树中。

输入文字的示例:

  

Luis Vaz de Camoes Os Lusiadas

     

Canto Primeiro

     

作为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;阙   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 semper 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;如果没有大学,Se tao   崇高的预科电视剧。

我需要读取单词和数字以将它们保存在树中。

1 个答案:

答案 0 :(得分:0)

strtok在这里应该是一个很大的帮助,这是使用您确定的大多数分隔符的示例:

#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;
}