找出最长数字子串,并指出开始位置

来源:互联网 发布:lcd1602数据手册 pdf 编辑:程序博客网 时间:2024/05/16 12:18
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
unsigned int max = 0,len =0,loc =0;        //max表示最大的数字子串长度,len表示当前数字子串长度,loc表示数字子串位置
int i=0,flag=1,k=0;                       //i为字符串读取的位数,flag为标志,当flag为1时为数字子串的第一个数字开始记录,k用于记录子串的地址
char *p_max,*ptr;         //ptr指向数字子串存放的地址


p_max=ptr=str;


printf("please input a string\n");
scanf("%s",str);//输入字符


    while(str[i] != '\0')
{
if(str[i]<'0' || str[i]>'9')
{
if(len>max)
{
max=len;
loc=k;
p_max=ptr;
}
len = 0;
if(flag == 0)
{
flag = 1;
}
i++;
}
else
{
if(flag == 1)
{
ptr=&str[i];
flag=0;
k=i;
}
len++;
i++;
}
}

if(len > max)
{
max=len;
loc=k;
p_max=ptr;  //为了取到结尾的数字字串
}
printf("max len is %d,the local is %d\n",max,loc);
printf("the max sub string is:\n");
for(i=loc;i<loc+max;i++)
{
printf("%c",str[i]);
}printf("\n");
return 0;
}
0 0
原创粉丝点击