求助:输入一串字符串中的最长单词 出错了
#include<stdio.h>#include<string.h>
int main()
{
int longest(char x[]);
int num(char);
char a[50];
int i;
printf("putin line:\n");
gets(a);
printf("the longest word is:\n");
i= longest(a);
for(;num(a[i])==1;i++)
{
printf("%c",a[i]);
}
printf("\n");
return 0;
}
int longest(char x[])
{
int num(char);
int i=0,l=0,k=0;
char *p1, *p2;
p2=x;
p1=x;
for(i=0;(x[i])!='\0';i++)
{
if(num(x[i]))
{
if(num(x[i-1]))
{
p2=&x[i];
}
else
{
p1=&x[i];
}
}
else
{
if(l<p2-p1)
{
l=p2-p1;
k=i;
}
}
}
k=k-l/4;
return k;
}
int num(char a)
{
if ((a>='a')&&(a<='z')||(a>='A')&&(a<='Z'))
{
return 1;
}
else return 0;
}
不明白到底哪里出错了 是不是思路有问题?为什么输出的总是第一个单词的最后一个字母呢。。。