C语言 将用户输入的字符串中的所有数字提取出来
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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')
? ?
i++;
? ?
? ?
printf("%s\n",digit);
请问三个问号行应该怎么填。。为什么
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
intmain()
intz=0;
intt,i;
int*p;
intm=0;
ints=0;
chara[10];//输入一个字符串到a[6]
printf("请输入一个字符串\\n");
scanf("%s",a);//输入字符串
for(i=0;i<10;i++)//计算a[6]中的数字个数
if(a[i]>='0'&&a[i]<='9')
m++;
if(m==0)
printf("字符串中没有数字\\n");
p=(int*)calloc(m,sizeof(int));//动态数组
for(i=0;i<10;i++)
if(a[i]>='0'&&a[i]<='9')
*(p+s)=a[i]-48;
s++;
//组成新的整数
for(t=0;t<m;t++)
z+=(*(p+t))*pow(10,m-(t+1));//组成新的整数
printf("新组成整数:%d\\n",z);
free(p);
kuo
扩展资料
C语言实现将字符串的数字提取为整数
#include<stdio.h>
intStringToInteger(char*p)
intvalue=0;
while(*p!='\\0')
if((*p>='0')&&(*p<='9'))
value=value*10+*p-'0';
p++;
returnvalue;
intmain(void)
char*str="112.123.156.1";
intval=0;
val=StringToInteger(str);
printf("value=%d\\n\\r",val);
getchar();
return0;
参考技术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】里面,并且i的下标加1i++;
ps++;//不管是不是,判断完当前的字符*ps之后,ps++,表示移动到下一个字符判断。
digit[i]='\\0';//给保存数字字符的字符数组加上个结束符号‘\\0’,因为printf(%s)是以'\\0'表示字符结束的。
提取字符串中数字,输出整型数:
while写法:
a='abc12d345'
i=0;
b=0;
while i<len(a):
if '0'<=a[i]<='9':
b=b*10+int(a[i])
i+=1;
print(b)
for写法:
a="abc12d345"
b=0;
for i in a:
if '0'<=i<='9':
b=b*10+ord(i)-48
print(b)
扩展资料:
提取字符串的数字:
将用户输入的字符串中的所有数字提取出来核心思想是每找到一个连续的数字子串,就分别用两个指针begin和end来标记它,并且每当处理完一个数字子串,就将新的起点设在上一次数字子串结尾的后一个的字符上,直到起始位置的字符为空,则遍历结束。
#include <stdio.h>
void main (void)
char a[15]='0','-','1','2','3','-','4','1','5','6','2','-','4','\\0','\\0';
int b[10];
int i,j;
j=0;
for(i=0;a[i]!='\\0';i++)
if(a[i]>='0'&&a[i]<='9')
b[j]=a[i]-'0';
j++;
for(i=0;i<j;i++)
printf("b[%d]:%d\\n",i,b[i]);
参考技术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 #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);
本回答被提问者采纳 参考技术D 楼主采纳我吧
#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'表示字符结束的
以上是关于C语言 将用户输入的字符串中的所有数字提取出来的主要内容,如果未能解决你的问题,请参考以下文章