我有两种文本需要拆分成单词。
第一种文本文件只是由换行符分隔的单词。
第二种文本文件是来自书籍的纯文本,只包含空格。(没有逗号、问号等符号。)
树成功地插入了单词并将它们打印出来,这意味着我的树工作正常,并且它的函数(也是由我们的老师给出的)。 但是当我尝试像这样做时:
第一种文本文件只是由换行符分隔的单词。
Milk
Work
Chair
...
第二种文本文件是来自书籍的纯文本,只包含空格。(没有逗号、问号等符号。)
And then she tried to run
but she was stunned by the view of
...
请问您知道最佳的方法是什么吗?
我尝试了以下2种方式,但好像出现了分段问题。
对于第一种文本类型,我使用:
while(fgets(line,sizeof(line),wordlist) != NULL)
{
/* Checks Words |
printf("%s",line);*/
InsertWord(W,line);/*Function that inserts the word to a tree*/
}
对于第二类文本,我使用:
while(fgets(line,sizeof(line),out) != NULL)
{
bp = line ;
while(1)
{
cp = strtok(bp," ");
bp = NULL ;
if(cp == NULL)
break;
/*printf("Word by Word : %s \n",cp);*/
CheckWord(Words, cp);/*Function that checks if the word from the book is the same with one in a tree */
}
}
您能否提供更好的建议或者纠正我对以下问题的理解?
编辑:(关于segm.fault)
InsertWord是一个将单词插入到树中的函数。当我使用以下代码时:
for (i = 0 ; i <=2 ; i++)
{
if (i==0)
InsertWord(W,"A");
if (i==1)
InsertWord(W,"B");
if (i==2)
InsertWord(W,"c");
}*/
树成功地插入了单词并将它们打印出来,这意味着我的树工作正常,并且它的函数(也是由我们的老师给出的)。 但是当我尝试像这样做时:
char this_word[15];
while (fscanf(wordlist, "%14s", this_word) == 1)
{
printf("Latest word that was read: '%s'\n", this_word);
InsertWord(W,this_word);
}
我从树结构中得到了错误信息。因此,我猜测这是某种分段错误。你有什么想法吗?
InsertWord
和/或CheckWord
。 - Jongwareout
,这似乎很奇怪。这是一个错误还是不幸选择的名称?但是你真的需要展示一个完整但最小化的示例来展示你的问题。否则我们只能猜测。 - Thomas Padron-McCarthy