C 最长数字子串

题目:查找字符串中长度最长的数字子串,返回最长子串在数组中的位置,项数,长度。

分析:利用循环逐个查找字符串,找到数字串时记下首字母位置,长度,再与其他子串比较,得出最长子串。

程序如下:

#include<stdio.h>
#include<ctype.h>
char * s_gets(char * st, int n);
int main()
{
char str[30];
printf("please enter str:");
s_gets(str, 30);
int i=0, j,temp,k=0,max=0,start=0;
char * ptr,*max_ptr;
while (str[i]!='\0')
{
while(!isdigit(str[i]))
i++;
if (isdigit(str[i]))
{
ptr = &str[i];
temp=i;
j = 0;
while (isdigit(str[i]))
{
i++;
j++;
}
if (j > max)
{
start = temp;
max_ptr = ptr;
max = j;
}
k++;
}
}
puts(str);
printf("最大子串在字符串中的位置是%d\n", start+1);
printf("最长子串长度%d\n", max);
for(i = start;i < max+start;i++)
printf("%c",str[i]);
printf("\n");
return 0;
}
char * s_gets(char * st, int n)
{
char * ret_val;
int i = 0;
ret_val = fgets(st, n, stdin);
if (ret_val)
{
while (st[i] != '\n'&&st[i] != '\0')
i++;
if (st[i] == '\n')
st[i] = '\0';
else
while (getchar() != '\n')
continue;
}
return ret_val;
}

结果如下:

please enter str:123sada2312414dfssd12315345
123sada2312414dfssd12315345
最大子串在字符串中的位置是20
最长子串长度8
12315345
请按任意键继续. . .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值