C语言编程:从字符串中提取数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程:从字符串中提取数字相关的知识,希望对你有一定的参考价值。
1、首先打开visual studio软件,新建一个C语言文件,如下图所示。
2、接着在C语言文件的顶部导入库内容,如下图所示。
3、接着运用scanf函数接收用户输入的字符串。
4、然后利用printf函数打印一下用户输入的内容。
5、运行程序以后就会弹出如下图所示的CMD界面,输入内容就会自动接收到,然后原样输出内容。
6、最后如果接收其他的类型,比如整数,那么类型就需要改变成int,如下图所示,并且scanf里面的接收类型变为d%,提取字符串中的数字。
参考技术A #include<stdio.h>#include<string.h>
#include<math.h>#define N 100
int change(char string[]);
int count_num(char *p,int *pt);void main()
char str[N],*p=str;
int a[N],*pt=a,i,n;
printf("Please enter a string:\n");
gets(p);
n=count_num(p,pt);
printf("\nnum=%d\n",n);
for(i=0;i<n;i++)
printf("%d ",*(pt+i));
printf("\n");
int count_num(char *p,int *pt)
char string[N];
int i=0,num=0;
do
if(*p>='0'&&*p<='9')
string[i++]=*p;
else
string[i]='\0';
if(i)
*pt++=change(string);
i=0;
num++;
;
while(*p++);
return num;
int change(char string[])
char *p=string;
int i,j,number=0;
for(i=strlen(p)-1,j=0;i>=0;i--,j++)
number=number+(*(p+i)-'0')*(int)pow(10,j);
return number;
C语言提取字符串中的所有数字
#include<stdio.h>int
main()
char
str[1000];//保存读取到的字符串
long
sum=0,data[1000];
int
i=0,top=0;
printf("输入字符串:\n");
scanf("%s",str);
while(str[i]!='\0')//未到字符串末尾
if(str[i]>='0'&&str[i]<='9')//如果是数字
sum=sum*10+(str[i]-'0');//连续数字转换为数.
else
if(sum!=0)//保存这个数
data[top++]=sum;
sum=0;
i++;
if(sum!=0)//判断最后一个字符是否是数
data[top++]=sum;
printf("字符串中的数字是:\n");
i=0;
while(i<top)
printf("%ld",data[i]);
if(i<top-1)//不打印最后一个逗号
printf(",");
i++;
printf("\n");
system("pause");
return
0;
参考技术A #include <stdio.h>
void main()
char str[50];
int i=0; //i是数组下标. gets(str); //输入字符串.while(str[i]) //当数组元素不是字符串结束符时.执行while
if(str[i]>='0'&&str[i]<='9') //如果数组元素是数字. 就输出这个元素.
putchar(str[i]);
else
if(str[i-1]>='0'&&str[i-1]<='9') //否则判断前一个元素是不是数字.是的话输出一个空格.
printf(" ");
i++;
printf("\n");
参考技术B #include<stdio.h>
void main()
char str[10]='1','a','2','b','3','4','c','\0';
int i;
for(i=0;str[i]!='\0';i++)
if(str[i]>'0'&&str[i]<'9')
printf("%c\n",str[i]);
方法:从字符串第一个字符开始判断,通过for循环一个个的如果是当前字符,也就是str[i]比0大而且比9小,那么它就是数字,然后输出它就可以了。
两点需要注意:
(1)因为定义的是字符数组,所以printf输出的时候需要时%c单个字符的格式;
(2)if判断条件0和9要加单引号调用ASCII码,如果不加单引号就默认是ASCII码为0和9的字符而不是阿拉伯数字。
这个程序用的初始化,如果需要,可以编写用户输入数据的。 参考技术C string s = "sdka151221jfhj8js-9";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"-?[1-9]\d*");
System.Text.RegularExpressions.MatchCollection matchCollection= regex.Matches(s);
再根据你的业务需求处理matchCollection里的内容 参考技术D 挨个读取字符,对比0123456789 ,完毕。本回答被提问者采纳
以上是关于C语言编程:从字符串中提取数字的主要内容,如果未能解决你的问题,请参考以下文章