【发布时间】:2013-06-22 04:03:03
【问题描述】:
我写了一个计算文本中特定单词频率的函数。这个程序每次都返回零。我该如何改进它?
while (fgets(sentence, sizeof sentence, cfPtr))
{
for(j=0;j<total4;j++)
{
frequency[j] = comparision(sentence,&w);
all_frequency+=frequency[j];
}}
.
.
.
int comparision(const char sentence[ ],char *w)
{
int length=0,count=0,l=0,i;
length= strlen(sentence);
l= strlen(w);
while(sentence[i]!= '\n')
if(strncmp(sentence,w,l))
count++;
i++;
return count;
}
【问题讨论】:
-
我很惊讶你的程序竟然回来了。您使用了一个未初始化的
i,它在您的while(sentence[i]!= '\n')中永远不会增加,因为您的i++;由于缺少花括号而超出了循环范围。 -
也不清楚 w 是什么,频率数组是如何初始化的,也不清楚 total4 是什么。这不能很好地说明问题。
-
w 是取自用户的一个词。 total4 是段落数。
-
通过编写更好的代码来改进它? ;) 这是一个家庭作业问题。这甚至应该在 SO 上吗?
-
是的,这是我的家庭作业的平静。你能帮帮我吗?