输出一行字符串的最长单词(以#结束),帮忙看看这个C语言程序怎么运行结果不对?

#include<stdio.h>
#include<string.h>
main()
{
char string1[100],string2[100];
int i=0,max=1,k;
printf("input the string('#' to end):\n");
scanf("%c",&string1[i]);
while(string1[i]!='#')
{
i=0;
scanf("%c",&string1[i]);
while(string1[i]!='\0'&&string1[i]!='#')
{
i++;
scanf("%c",&string1[i]);
}
if(i>max)
{
max=i;
for(k=0;k<max;k++)//储存目前最长的单词
string2[k]=string1[k];
}
}

printf("The longest word is:");
for(i=0;i<max;i++)
printf("%c",string2[i]);
return 0;
}

scanf("%s",string1);可以一次读入整个字符串。

另外你需要找出最长的单词,单词间应该是以空格为分隔符的。找出最长的,用strncpy函数输出到string2中,然后在最后添加#和结束符\0,以%s方式输出string2就好了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-03
//前两天刚写了一个,接受空格字符,注意输入语句
#include<string.h>
#include<stdio.h>
#include<windows.h>
void main()
{ int flag=1,i=0,n=0;
int countw=-1; //记录最长单词的长度
char *b; //记录最长单词最后一个字符
char str[100],*temp;
scanf("%[^#]",str); //输入字符串,以#结束
temp=str;
do
{ if(isalpha(*temp)) n++; /* 如果当前字符为字母,则临时单词长度加1;否则判断是否为最长单词 */
else{ if(n>0 && n>countw) { b=temp-1; countw=n; }
n=0;
}
temp++;
}while(*(temp-1));

printf("\n最长的单词:\n",str);
for(i=b-countw+1;i<=b;i++)
printf("%c",*i);
printf("\n");
}本回答被网友采纳
第2个回答  2009-12-04
用strlong 每发现一个大的即修改max[1]字符串数组的值,最终直接打印出max[1]就可使实现了的,有专门的字符串求长的函数的调用就行了

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网