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

#include<stdio.h>voidmain(){charstr[80],digit[80];char*ps;inti=0;gets(str);ps=str;whi... #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);
}
请问三个问号行应该怎么填。。为什么
展开
 我来答
小星星教育知识分享
高粉答主

2019-11-30 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67136

向TA提问 私信TA
展开全部

#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;

}

博学小赵爱生活
高能答主

2019-06-18 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:456 获赞数:111875

向TA提问 私信TA
展开全部

#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]);

}

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ok洛阳水席
2013-05-24 · TA获得超过1839个赞
知道小有建树答主
回答量:580
采纳率:50%
帮助的人:523万
展开全部
#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);
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83cdc1c
推荐于2017-09-03 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:842万
展开全部
#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);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NewLife891218
2013-05-24 · TA获得超过781个赞
知道小有建树答主
回答量:217
采纳率:100%
帮助的人:73.1万
展开全部
楼主采纳我吧

#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'表示字符结束的
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式