Chinaunix首页 | 论坛 | 博客
  • 博客访问: 891191
  • 博文数量: 286
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1841
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-09 16:26
文章分类

全部博文(286)

文章存档

2016年(38)

2015年(248)

我的朋友

分类: LINUX

2015-07-23 15:00:28


点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>

  4. int findnumstring(char *outputstr, char *inputstr)
  5. {
  6.     /* temp用于指向正在搜索中的数字子串
  7.            final用于指向最终的最长的数字子串
  8.      */
  9.     char *in = inputstr, *out = outputstr, *temp, *final;
  10.     int count = 0, maxlen = 0;
  11.     int i;
  12.     
  13.     while( *in != '\0' ) //该循环用于找到最长的数字串,初始in指向输入串
  14.     {
  15.         // 如果in所指向的字符串的第一个字符为数字
  16.         // 就获取以此数字字符开始的数字串的长度
  17.         // 如果不是数字字符,in指向输入串的下一个字符
  18.         if( *in > 47 && *in < 58 )         
  19.         {
  20.             // 注意in指针在变化
  21.             for(temp = in; *in > 47 && *in < 58 ; in++ )
  22.                 count++;
  23.         }
  24.         else
  25.             in++;
  26.         
  27.         // 如果temp所指向数字串的长度比上一次找到的长
  28.         // 则把当前找到的最长数字串长度和地址分别赋给maxlen和final
  29.         if( maxlen < count )
  30.         {
  31.             maxlen = count;
  32.             final = temp;
  33.         }
  34.         
  35.         // 把count清零
  36.         count = 0;
  37.     }
  38.     
  39.     // while循环结束后,最长的数字串已经找到。
  40.     // 把找到的最长数字串存储到out所指的存储空间
  41.     for(i = 0; i < maxlen; i++)
  42.     {
  43.         *out = *final;
  44.         out++;
  45.         final++;
  46.     }
  47.     *out = '\0';
  48.     
  49.     return maxlen;
  50. }

  51. int main()
  52. {
  53.     // 主函数测试findnumstring函数是否正常工作
  54.     char string[] = "abcd12345eee125ss123456789";
  55.     char *p = (char *)malloc( strlen(string)+1 );
  56.     int count = findnumstring(p,string);
  57.     printf("%s\nnumber string length = %d\n",p,count);
  58. }


阅读(911) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~