首页 > 代码库 > 识别字符串中的整数并转换为数字形式
识别字符串中的整数并转换为数字形式
识别字符串中的整数并转换为数字形式(40分)
问题描述:
识别输入字符串中所有的整数,统计整数个数并将这些字符串形式的整数转换为数字形式整数。
要求实现函数:
void take_num(const char *strIn, int *n, unsigned int *outArray)
【输入】 strIn: 输入的字符串
【输出】 n: 统计识别出来的整数个数
outArray:识别出来的整数值,其中outArray[0]是输入字符串中从左到右第一个整数,
outArray[1]是第二个整数,以此类推。数组地址已经分配,可以直接使用
【返回】 无
注:
I、 不考虑字符串中出现的正负号(+, -),即所有转换结果为非负整数(包括0和正整数)
II、 不考虑转换后整数超出范围情况,即测试用例中可能出现的最大整数不会超过unsigned int可处理的范围
III、 需要考虑 ‘0‘ 开始的数字字符串情况,比如 "00035" ,应转换为整数35;
"000" 应转换为整数0;"00.0035" 应转换为整数0和35(忽略小数点:mmm.nnn当成两个数mmm和nnn来识别)
IV、 输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。
示例
输入:strIn = "ab00cd+123fght456-25 3.005fgh"
输出:n = 6
outArray = {0, 123, 456, 25, 3, 5}
1 #include<stdio.h> 2 #include<stdlib.h> 3 void take_num(const char *strIn, int *n, unsigned int *outArray) 4 { 5 int i,j,sum; 6 const char *p = strIn; 7 i = 0; 8 while (*p != ‘\0‘) 9 {10 sum = 0;11 while(*p < ‘0‘ || *p > ‘9‘)12 { if (*p == ‘\0‘)13 break;14 p++;15 }16 while (*p >= ‘0‘ && *p <= ‘9‘ )17 {18 if (*p == ‘\0‘)19 break;20 j = *p - ‘0‘;21 sum = sum * 10 + j;22 p++;23 }24 outArray[i] = sum;25 i++;26 if (*p == ‘\0‘)27 break;28 p++;29 }30 if(*(p-1) >= ‘0‘ && *(p-1) <= ‘9‘)31 *n = i;32 else33 *n = i-1;34 }35 int main()36 {37 char str[100];38 int *n;39 unsigned int out[100];40 n = (int*)malloc(sizeof(int));41 //scanf("%s",str);42 gets(str);43 take_num(str,n,out);44 printf("%d\n",*n);45 for (int i=0; i < *n; i++)46 printf("%d ",out[i]);47 printf("\n");48 return 0;49 }
注意判断字符串结尾结束标志。
识别字符串中的整数并转换为数字形式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。