C语言之从字符串中获取数字

以前就有的一个想法,如果有一串字符串,里面又有数字,又有字母,我们应该如何获取到里面的数字呢?废话不多说,直接看源码:

#include"stdio.h"
#include"string.h"
int main()
{
	char test[100];   //用于接收键盘输入字符串
	int longer,i,  //i 用于控制循环,longer用于获取字符串的大小
	int nums = 0,numz = 0;
	char *flag;
	
	//获取键盘输入的字符串
	printf("请输入字符串: ");
	scanf("%s",test);
	printf("test = %s !\n",test);
	
	//解析出输入字符串的个数
	longer = strlen(test);
	printf("longer = %d !\n",longer);
	
	//解析出字符串中的数字 -- 指针实现
	flag = test;
	for(i = 0 ; i < longer ; i++)
	{
		if((*flag >= '0')&&( *flag <= '9')) 
		{
			numz = numz*10 + *flag - '0';//这里是用字符的ASCLL码值进行比较,要减去0的ASCLL码值即为实际的数字
		}
		flag++;
	}
	printf("指针实现 num = %d !\n",numz);
	
	//解析出字符串中的数字 -- 数组实现
	for(i = 0 ; i < longer ; i++)
	{
		if((test[i] >= '0')&&(test[i] <= '9'))
		{
			nums = nums*10 + test[i] - '0';//这里同上
		}
	}
	printf("数组实现 num = %d !\n",nums);
	return 0;
}

再看一下运行结果:
在这里插入图片描述
这里写的比较简单,还不清楚的小伙伴可以添加我的个人微信 lqy—1997 (中间是三个英文的杠)进行交流。

发布了31 篇原创文章 · 获赞 52 · 访问量 8890

猜你喜欢

转载自blog.csdn.net/yuanbaba_123/article/details/91415712