while (len--)//while循环的作用:遍历输入的字符串,将以空格划分的各个单词拆分开,pos记录各个单词在输入字符串中的起始位置,max记录最长的单词的长度,cWord记录单词的个数。其中len是输出的字符串的长度
{
if (*p++ == ' ')//整个while中有这么一个if…else…,用来拆分字符串,遇到空格进入if,没有空格进入else
{
// 判断最大字符数
max = cChar > max ? cChar : max; //读到了空格,说明当前单词结束,判断该单词是不是最长的单词,max用来记录最长单词的长度
cChar = 0; //cChar清零,为统计下一个单词的长度做准备
// 到底了,退出循环
if (*p == '\0')//在第三行的if中,p进行了++,所以这里p已经指向了下一个字符,若该字符为'\0',说明字符串结束了,直接break跳出while循环
{
break;
}
// 单词数加一
if (*p != ' ')//若当前字符不是空格,说明已经开始下一个单词了,记录该单词在str中的位置,并将单词个数+1
{
pos[i++] = p; //pos记录下该单词在str中的位置
cWord++; //单词的个数+1
}
}
else // else中记录当前单词的长度,遍历字符串str的时候,读到的不是空格,则当前单词长度+1
{
cChar++; // 当前单词的长度+1
}
}
|