题目背景
编写一个函数,输入一行字符,将此字符串中最长的单词输出。
输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。
输入样例
I am a student
输出样例
student
说明 提示
时间限制:1.0s 内存限制:512.0MB
我的代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void MaxWord(const char *str)
{
char *maxstr=(char *)malloc((strlen(str)+1)*sizeof(char));//存储最长单词
char *curstr=(char *)malloc((strlen(str)+1)*sizeof(char));//存储最短单词
int max=0;//最长单词的长度
int cur=0;//当前单词的长度
while(*str!='\0')
{
if(isalpha(*str))
{
curstr[cur++]=*str;
}
else
{
if(cur>max)//将新的单词,更新到maxstr中
{
curstr[cur]='\0';//使curstr成为字符串
strcpy(maxstr,curstr);
max=cur;
}
cur=0;//丢弃之前的单词,为新单词做准备
}
str++;
}
printf("%s\n",maxstr);
free(curstr);
free(maxstr);
}
int main()
{
char *str[3]={"china","japan","england"};
printf("%s\n",str);
return 0;
}
我的代码感觉没问题,是哪里有错?
请将全部代码给我开一眼。我刚入门,不怎么懂!