#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//找最长单词
char *MaxWord(const char *str)
{
assert(str != NULL);
char *curstr = (char *)malloc((strlen(str)+1)*sizeof(char));//保存当前单词
char *maxstr = (char *)malloc((strlen(str)+1)*sizeof(char));//保存最长单词
int cur = 0;//保存当前单词的长度
int max = 0;//保存最长单词的长度
int flag=false;
while(*str != '\0')
{
if(isalpha(*str))//是字母字符,提取单词
{
curstr[cur++] = *str;
flag=true;
}
else if(flag)//非字母字符
{
if(cur > max)//最长单词需要更新
{
curstr[cur] = '\0';
strcpy(maxstr,curstr);
max = cur;
flag=false;
}
cur = 0;
}
str++;
}
if(flag)//处理字符串最后的单词,容易忘记,从而产生BUG
{
if(cur > max)
{
curstr[cur] = '\0';
strcpy(maxstr,curstr);
max = cur;
}
}
free(curstr);
return maxstr;
}
int main()
{
char *p = MaxWord("adfn 34kafjdfjsd98adfqwertywertyerty");
printf("%s\n",p);
free(p);
return 0;
}
17-找出最长单词
最新推荐文章于 2022-11-26 21:01:39 发布