1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 07-提取字符串中的数字数组

07-提取字符串中的数字数组

时间:2020-04-08 10:10:55

相关推荐

07-提取字符串中的数字数组

#include<stdio.h>#include<stdlib.h>#include<ctype.h> #include<assert.h>static int Count(const char *str)//内部函数(别的文件不允许使用){int tmp = 0;while(*str != '\0'){if(isdigit(*str) && !isdigit(*(str+1)))//当前是数字字符,后一个是非数字字符{tmp++;}str++;}return tmp;}//提取字符串中的数字数组//void GetNum(const char *str)//errorint *GetNum(const char *str,int *rtlen) //rtlen:输出参数 类似scanf的参数{assert(str != NULL);if(str == NULL)return NULL;//int arr[10];//局部变量(生命周期从进入函数创建,函数结束销毁)//return arr;int count = Count(str);*rtlen = count;//解引用,赋值 int *arr = (int *)malloc(count*sizeof(int));int i = 0;//arr下标int tmp = 0;//保存数字bool flg = false;//是否有新的数据while(*str != '\0'){if(isdigit(*str))//数字字符,提取数字{tmp = tmp*10 + *str - '0';flg = true;}else if(flg)//非数字字符,将数字存放到数组中 "123adf456ad789"{arr[i++] = tmp;tmp = 0;flg = false;}str++;}if(flg)//处理尾部数据{arr[i] = tmp;}return arr;}int main(){int len;int *p = GetNum("123adf456ad789",&len);for(int i=0;i<len;i++){printf("%d ",p[i]);}free(p);//int *p = GetNum("123adf456asdf789");//for(int i=0;i<Count("123adf456asdf789");i++)//实现可以,设计(实际)不可以//{//printf("%d ",p[i]);//}//printf("%d\n",Count("23adf123 34t89"));return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。