2013-03-17 58 views
0

我有功能,这应该算多少字符有最长的词,但它计算错误。多少个字符具有最长的单词用C

例如,如果我输入两个词时,第一个比第二个短:“我的名字”节目让我发现,最长的词有2个字符。但是当我输入“命名我的”时,显示结果是4.为什么?

void max_chars(ListNodePtr sPtr) 
{ 
    int i = 0; 
    int max = 0; 

    while (sPtr->next != NULL) { 
     if (isalpha(sPtr->data)) { 
      i++; 
     } else { 
      if (i > max) { 
       max = i; 
      } 
      i = 0; 
     } 
     sPtr = sPtr->next; 
    } 

    printf(" \n The Longest word have : %d chars \n", max); 
} 
+0

是'特征码= sPtr-> next'递增的东西吗?我提到它是因为你每循环调用两次。一个在while语句中,一个在循环体中。如果它增加了一些指针,那么你就会走两两个字符。尝试打印当前评估的角色,看看发生了什么。 – Jean 2013-03-17 22:07:19

+0

而不是使用NULL使用'\ 0'(标准) – Mitro 2013-03-17 22:21:14

+0

并看看这个http://stackoverflow.com/questions/15340343/strings-gets-and-do-while – Mitro 2013-03-17 22:22:24

回答

2

my name当你到达节点ebreak循环,因为nextnull等等max不会被更新。
您应该更新max环路以外以及或改变循环的条件

0
void max_chars(ListNodePtr sPtr) 
{ 
    int i = 0; 
    int imax = 0; 

    for(;sPtr; sPtr = sPtr->next;) { 
     if (isalpha(sPtr->data)) { if(++i > imax) imax=i; } 
     else { i = 0; } 
    } 

    printf(" \n The Longest word have : %d chars \n", imax); 
} 
相关问题