C语言 将用户输入的字符串中的所有数字提取出来
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;
}
#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]);
}
}
#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);
}
#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'表示字符结束的
}