找最长数字子串

来源:互联网 发布:切尔诺贝利核事故 知乎 编辑:程序博客网 时间:2024/06/06 02:03

输入一串字符串,找出最长数字子串,并输出它的起始位置。

#include <stdio.h>

#include <string.h>

 

int main()

{

         char str[100];

         int max = 0,len = 0,l = 0;  //定义最长长度max,数字子串长度len,起始位置l

         int i,flag = 1,k=0;  //循环变量i,标志flag:为数字子串为1,字符子串为0

         char *ptr,*pmax;

         printf("pleaseinput a string:\n");

         scanf("%s",str);

         ptr= str;

         for(i= 0;str[i] != '\0';i++)

         {

                  if((str[i]< 48) || (str[i] > 57))

                  {

                          i++;

                          if(max< len)

                          {

                                   max= len;

                                   pmax= ptr;

                                  flag = 1;

                                  k=l;

                          }

                          len= 0;

                  }

                  else

                  {

                          while(flag== 1)

                          {

                                   ptr= &str[i];

                                   flag= 0;

                                   l= i;

                          }

                          len++;

                          i++;

                  }

         }

 

                          if(max< len)

                          {

                                   max= len;

                                   pmax= ptr;

                                   flag= 1;

                                   k=l;

                          }

 

         printf("max len is %d\n",max);

         printf("start from %d\n",k+1);

         for(i= l-1;i < l + max + 1;i++)

                  printf("%c",str[i]);

         printf("\n");

 

         return 0;

}

0 0