C中最长的单词有多少个字符



我有一个函数,它应该计算有多少个字符有最长的单词,但是它计数错误。

例如,如果我输入两个单词,第一个比第二个短:"my name"程序显示最长的单词有2个字符。但是当我输入"name my"时,结果显示为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);
}

my name中,当您到达e节点时,您将break循环,因为nextnull,因此max没有更新。
你也应该在循环之外更新max或者改变循环的条件

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

相关内容

  • 没有找到相关文章

最新更新