C语言提取字符串中的所有数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语言 将用户输入的字符串中的所有数字提取出来

楼主采纳我吧
#include
<stdio.h>
void
main()

char
str[80],digit[80];
char
*ps;
int
i=0;
gets(str);
ps=str;
while(*ps!='\0')

if(*ps>='0'&&*ps<='9')

digit[i]=*ps;//若当前字符是数字字符,保存到digit【i】里面,并且i的下标加1
i++;

ps++;//不管是不是,判断完当前的字符*ps之后,ps++,表示移动到下一个字符判断

digit[i]='\0';//给保存数字字符的字符数组加上个结束符号‘\0’,因为printf(%s)是以'\0'表示字符结束的
参考技术A #include <stdio.h>
void main()

char str[80],digit[80];
char *ps;
int i=0;
gets(str);
ps=str;
while(*ps!='\0')

if(*ps>='0'&&*ps<='9')

digit[i]=*ps; //找到数字,存放到数组digit里
i++;

ps++; //ps指针指向字符串下一个字符

digit[i]='\0'; //为了能用%s输出,digit在末尾要加一个结束字符'\0'
printf("%s\n",digit);
参考技术B #include <stdio.h>
void main()

char str[80],digit[80];
char *ps;
int i=0;
gets(str);
ps=str;
while(*ps!='\0')

if(*ps>='0'&&*ps<='9')

digit[i]=*ps;//充入digit中
i++;

ps++;//ps后移

digit[i]='\0';//在字符串最后填一个'\0'作为结束符
printf("%s\n",digit);

以上是关于C语言提取字符串中的所有数字的主要内容,如果未能解决你的问题,请参考以下文章

C语言 将用户输入的字符串中的所有数字提取出来

C语言怎么把字符串中的某一部分提取出来?

将字符串a中的数字取出存储到b中,用C语言指针怎么实现

c语言中计算字符串中数字字符个数

C语言字符串读取数字

C++提取字符串里面的数字