程序没有输出预期的结果!
#include<stdio.h>#include<string.h>
char maxword(char *s,char *t)
{
char *res,*temp,chs,cht;
int i,j,found,maxlen=0;
while(*s!='\0')
{
while(*s=='.')s++; //这里的while循环语句只有s++
for(i=0;s[i]!='.'&&s[i]!='\0';i++);//这里的FOR里面为空语句
if(i>maxlen)
{
chs=s[i];s[i]='\0';temp=t;found=0;
while(*temp!='\0'&&!found)
{
while(*temp=='.')temp++;
for(j=0;temp[i]!='.'&&temp[j]!='\0';j++);//这里的FOR里面为空语句
if(j==i)
{
cht=temp[j];temp[j]='\0';
if(strcmp(s,temp)==0)
{
maxlen=i;res=s;found=1;
}
temp[j]=cht;
}
temp=&temp[j];
}
s[i]=chs;
}
s=&s[i]; }
if(maxlen==0)
printf("There is no same word.\n");
else
{
chs=res[maxlen];res[maxlen]='\0';
printf("%s\n",res);res[maxlen]=chs;
}
}
main()
{ char s[]="This is C programming test",t[]="This is a test for C programming";
maxword(s,t);
getch();
}
本段程序是在两个相的的字符串中找相同的字符串,偶写的没有语法问题,可以编译,但输出的结果是There is no same word。 不知道出了什么问题,那位可以帮偶看一下!
另外,这个temp[i]!='.'&&temp[j]!='\0'表达式里面的是什么意思?无论我把单引号里面的点去掉,还是不去掉,在语法上好像是没有错误的,能编译!
[ 本帖最后由 xinbuzai 于 2010-7-4 16:53 编辑 ]