C语言中从字符串中提取数字

题目要求:
输入字符串,把其中的整数提取出来,放在一个新的数组中,统计有多少个整数,并输出这些数。
小记:
本人最近在学习谭浩强经典C语言教材,此题目为谭浩强《C程序设计》第8章,16题。谭老的解写得比较繁琐,故我自己写了一个笔记做回顾。
程序如下:


#include 
#include 
int main() {
	char str[80] = "00fs2jjksf0jsf 232.sfdjk,";
	int a[20], i, m;
	int find_num(int *a, char *str);
	m = find_num(a, str);
	for(i = 0; i < m; i++) {
		printf("%d ", a[i]);
	}
	printf("一共有%d个数\n", m);
	return 0;
}
//把str中找到的数字放入a中
int find_num(int *a, char *str) {
	int i, k, sum = 0, flag = 0,m = 0;
	//i记录循环次数
	//sum存放连在一起所有数的值
	//k记录提取的单个数的值
	//flag记录当前是否为数字
	//m记录a[]的下标,存放数字到a数组中
	for(i = 0; i <= (int)strlen(str); i++) {
		//当前位为数字,则放入k中
		if (str[i] >='0' && str[i] <= '9') {
			flag = 1;
			k = str[i] - '0';
		} else {
			//flag为1说明,前一位是数字,而现在已不是数字
			//故把计算的sum放入数组中,一组连在一起的数字判断完成
			if (flag == 1) {
				a[m++] = sum;
			} 
			//复位
			flag = 0;
			sum = 0;
		}
		//若为数字,则计算连在一起的数字的值
		if (flag == 1) {
			sum = sum * 10;
			sum += k;
		}
	}
	//返回个数
	return m;
}

你可能感兴趣的:(C语言)