天天看點

C語言:提取字元串中的數字

第一次寫部落格 

做作業的時候有一道題要求統計字元串中的數字

如“12s133 358-76vh9”,提取出每段數字并将其化為整型:

12、133、358、76、9

邏輯思想:周遊數組,用檢測是否處于數字字元或數字字元與其他字元的交界處的方法判斷是否應該開始讀取數字和結束讀取,類比電位的上升與下降。

代碼如下:

#include<stdio.h>
#include<string.h>
#include<math.h>

int main()
{
	char a[20];
	printf("字元串:");
	gets(a);

	int len=strlen(a),i,j,count=0,wei[20],num[10]={0},times=0;
	bool ctoi=0,befctoi=0;
	for(i=0;i<len+1;i++)
	{
		if(a[i]>='0'&&a[i]<='9')
		{
			ctoi=1;
		}
		else
		{
			ctoi=0;
		}
		if(befctoi==0&&ctoi==1)//上升沿
		{
			wei[count]=a[i]-'0';
			befctoi=1;
			count++;
		}
		else if(befctoi==1&&ctoi==1)//高位
		{
			wei[count]=a[i]-'0';
			count++;
		}
		else if(befctoi==1&&ctoi==0)//下降沿
		{
			for(j=0;j<count;j++)
			{
				num[times]+=wei[j]*pow(10,count-j-1);
			}
			times++;
			befctoi=0;
			count=0;
		}
	}

	printf("%d個數\n",times);
	for(i=0;i<times;i++)
	{
		printf("a[%d]=%d\n",i,num[i]);
	}

	return 0;
}
           

效果如圖: 

C語言:提取字元串中的數字

繼續閱讀