为什么当最长的单词出现在最后一个就不能输出
#include
#include
void f(char m[],int n)
{
int i,count=0,r=0,s=0;
for(i=0;i<=n;i++)
{
if(m[i]!=' ')
{
count++;
}
else if(m[i]==' '||m[i]=='\0')
{
if(r<count)
{
r=count;
s=i-1;
}
count=0;
}
}
for(i=s-r+1;i<=s;i++)
{
printf("%c",m[i]);
}
}
int main()
{
char a[100];
gets(a);
int len=strlen(a);
f(a,len);
printf("\n");
return 0;
}
假设输入为a bc, strlen函数返回值为4
这样在第一个for循环中m[4]也会被判断,而m[4]不等于空格是成立的,所以conut结果为3,显然是不对的,应该是bc的长度2
if(m[i]!=' ')
{
count++;
}
修改后的代码如下:
void f(char m[], int n)
{
int i, count = 0, r = 0, s = 0;
for (i = 0;i <= n ;i++)
{
if (m[i] != ' ' && m[i] != '\0') //此处为重新修改判断条件
{
count++;
}
else
{
if (r<count)
{
r = count;
s = i - 1;
}
count = 0;
}
}
for (i = s - r + 1;i <= s;i++)
{
printf("%c", m[i]);
}
}
int main()
{
char a[100];
gets(a);
int len = strlen(a);
f(a, len);
printf("\n");
return 0;
}