思路:1.认定连续字母即为单词
2.遇到'\0'即停止
#include<stdio.h>
#include<string.h>
#include<assert.h>
//最长单词
int Longest(char* arr, const int len)
{
assert(arr != NULL);
if (arr == NULL)
{
return 0;
}
int max_i = 0;//最长的单词第一个字母的位置
int count2 = 0;//当前单词字符数
int max = 0;//迄今为止最长的
int i = 0;
while (arr[i] != 0)
{
count2 = 0;
while ((arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] <= 'Z' && arr[i] >= 'A'))
{
count2++;
i++;
};
if (max < count2)
{
max = count2;
max_i = i - count2;
}
i++;
};
return max_i;
}
int main()
{
//最长单词
char arr[100] = {"tomorrow is other day."};
int len = sizeof(arr) / sizeof(arr[0]);
int i = Longest(arr, len);
printf("the longest word of this sentence is ");
for (i; (arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] <= 'Z' && arr[i] >= 'A'); i++)
{
printf("%c", arr[i]);
}
printf("\n");
return 0;
}