#include
#include
void function(char str[]); /*函数声明在外面*/
void main()
{
char str[100];
printf("请输入一行字符串:");
gets(str);
str[strlen(str)]='#';
function(str);
}
void function(char str[])
{
int i=0,j=0,k=0;
char str1[30][30],str2[100];
int state = 0; //设制一个状态记录str[i]是不是字母, 0表示不是 1 表示是
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z'))
{
str1[j][k]=str[i];
k++;
str1[j][k] ='\0'; /*字符串都以'\0'结尾所以每次都保持str1[i]是一个字符串, 复制给str2就不会出现少'\0'的情况啦*/
state = 1; //及时设置状态
}
else
{
if(state == 1) {j++;} //仅仅让单词存进去 别的字符就别存到str1中了
state = 0; //及时设置状态
k=0;
}
}
strcpy(str2,str1[0]);
for(i=1;i
{
if(strlen(str1[i])>strlen(str2)) /*总是让str2保持是最长的字符串*/
strcpy(str2,str1[i]);
}
printf("该字符串中最长的单词是:%s\n",str2);
}
这段代码中为什么需要str[strlen(str)]='#'的目的是什么?