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;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-06-18

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

}

}

本回答被网友采纳
第2个回答  2013-05-24
#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);
}

第3个回答  推荐于2017-09-03
#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);
}

本回答被提问者采纳
第4个回答  2013-05-24
楼主采纳我吧

#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语言将用户输入的字符串中的所有数字提取出来
在C语言中,提取用户输入的字符串中的所有数字可以通过遍历字符串并检查每个字符是否为数字来实现。这通常通过`isdigit()`函数完成,该函数定义在``头文件中,用于检查给定的字符是否为十进制数字('0'-'9')。以下是一个简单的示例程序,该程序读取用户输入的字符串,然后遍历该字符串,使用`isdigit()...

C语言 将用户输入的字符串中的所有数字提取出来
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));\/...

...从键盘输入一个字符串,将其中所有的数字字符抽出,按原顺序组成一个...
int main(void){ char s[100],ns[100];int i,j;printf("Please intput a string...\\ns=");gets(s);for(j=i=0;ns[j]=s[i];i++)if(s[i]<'0' ||s[i]>'9')j++;puts(ns);return 0;}

用c语言提取字符串中的数字
用c语言提取字符串中的数字的操作如下:1、首先打开visual studio软件并创建一个新的c语言文件,如下所示。2、然后导入C语言文件顶部的库内容,如下所示。3、然后使用scanf函数接收用户输入的字符串。4、然后使用printf函数打印用户输入。5、运行程序后,弹出下图所示的命令界面,自动接收输入内容,按原样输...

C语言如何把一个字符串中的数值全提取出放在一个数组里面
用 sscanf() ;例如:char str[80]="1101";int a[4];sscanf(str,"%1d%1d%1d%1d",&a[0],&a[1],&a[2],&a[3]);

问:在C语言中,我从字符串中提取出所有的数字,怎么把这些数字存起来然后...
这是0~9数字的提取与排序;include<cstdio> include<algorithm> include<cstring> using namespace std;int main(){ char a[20];scanf("%s",&a);int j=0,n=strlen(a),b[20];for(int i=0;i<n;i++){ if(a[i]>=48&&a[i]<=58){ b[j]=a[i];j++;} } for(int i=0;i<...

...统计并输出其中的大写字母、小写字母、数字字符、其它字符的个...
include<stdio.h> void main(){ char a[100];int sum0=0,suma=0,sumA=0;gets(a);char*p;for(p=a;*p!='\\0';p++){ if(*p>='0'&&*p<='9')sum0+=1;else if(*p>='a'&&*p<='z')suma+=1;else if(*p>='A'&&*p<='Z')sumA+=1;} printf("数字字符数量:%d\\n小写字母...

c语言怎么提取字符串中的数字
使用isdigit()函数。在C语言中,可以使用标准库函数isdigit()来检查一个字符是否为数字。isdigit()函数定义在头文件ctype.h中,原型是intisdigit(intc)。

c语言一串字符串中提取数字并相加的问题
printf("请输入字符串1:(输入?结束)");\/\/输入?作为字符串1的结束符 while(x!='?') { x=getchar(); if(x=='?') break; input1=x; if(input1>='0'&&input1<='9')\/\/每检查到一个数字就要乘10,进一位 number1=number1*10+input1-'0';\/\/比如字符'9'-'0'之后的数是数字9 } x...

...1.字符串程序设计: 写程序将用户输入的由数字字符和非数字字符组成的...
不用给分了,我没时间给你写程序了,只能把大体算法告诉你:::数字在ASC2中是连续的。是048到057,可以写一个循环程序在字符串中把在这个范围内的字符复制到一个数组中,然后输出数组就可以了。如果还不行可以找我,我试试帮你。

相似回答