choose the longest word in the line .把字符串中最长的单词输出

#include<malloc.h>
#include<stdio.h>


int main()
{
      char*getstr(void);
  //    intlongest(char *str,char *word);
      intlongest(char string[]);
      intalphabetic(char c);
      char *str =NULL;char *word = NULL;
      intlength,i,j;
      printf("Please input one line:\n");
      str =getstr();

    // word  =(char*)malloc(sizeof(char)*1);
    // length =longest(str,word);
      printf("Thelongest word in thi text is:");
      for(i =longest(str),j = 0;alphabetic(str[i]);i++,j++)//input the longestword.
      {
              printf("%c",str[i]);


      }
      printf("\nits length is %d",j);
      return0;
}


char * getstr(void)
      {
              char c,*str=NULL;
              int n=0;
              while (1)
              {
                    c=getchar();
                    str=(char*)str?realloc(str,sizeof(char)*++n):malloc(sizeof(char)*++n);
                    if (c=='\n'||c==EOF)
                    {
                            str[n-1]='\0';
                            break;
                    }//if
                    str[n-1]=c;
              }
              return str;
      }

int alphabetic(char c)
{
      if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
              return 1;
      else return0;
}

int longest(char string[])
{
      int i,length= 0,flag = 0,place = 0,point;
      for(i =0;i<=strlen(string);i++)
      {

              if(alphabetic(string[i]))
              {
                      if(flag==0)
                      {
                              point = i;
                              flag = 1;
                      }
                      else
                      {
                              flag++;
                      }
              }
              else
              {

                      if(flag>=length)
                      {
                              length = flag;
                              place = point;


                      }
                      flag = 0;
              }//else
      }//for

      returnplace;
}//longest







注释掉的是本人写的,同过参数传递的方式获取单词长度length/单词word。测试用例比较简单,目前未发现bug。

未注释掉的则是根据教材修改的,实现的也是同上功能(比教材多一点功能),经过严格的白盒测试,基本无bug。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值