最长的单词c++用字符串写不能用函数

最长的单词
c++

【问题描述】

一个以“.”结尾的简单英文句子,单词之间用一个空格或者逗号分隔,没有缩写形式和其他特殊形式。

输入:一个以“.”结尾的简单英文句子(长度不超过500)。

输出:该句子中最长的单词。如果多于一个,则输出第一个。

【样例输入】

Hello,I am a chinese girl.

【样例输出】

chinese

#include <iostream>

int main()
{
    const int N = 500;
    char a[N];
    char ch;
    int i = 0;
    while ((ch = std::getchar()) != EOF)
    {
        if (ch == '.')
            break;
        a[i++] = ch;
    }
    a[i] = '\0';
    const char *first = nullptr;
    const char *last = nullptr;
    int len = 0;
    const char *p = a;
    while (*p)
    {
        if (std::isalpha(*p))
        {
            const char *q = p;
            int c = 0;
            do
            {
                p++;
                c++;
            } while (*p && std::isalpha(*p));
            if (c > len)
            {
                len = c;
                first = q;
                last = p;
            }
        }
        else
        {
            p++;
        }
    }
    for (; first != last; ++first)
        std::cout << *first;
    return 0;
}