编写函数int parse(char *str, int *num),用户输入的字符串中包含有若干个数字,要求通过该函数将数字提取出来,并返回数字个数。
Sample Input 1
Abc12dE23 e45i789
Sample Output 1
Total 4 numbers:
12 23 45 789
//编写函数int parse(char *str, int *num),用户输入的字符串中包含有若干个数字,要求通过该函数将数字提取出来,并返回数字个数。
#include<stdio.h>
int parse(char *str,int *num){
int k=0,n=0;
for(int i=0;str[i]!='\0';i++){
if(str[i]>=0&&str[i]<=9){
for( ; ;i++){
if(str[i]>=0&&str[i]<=9){
num[k]=str[i];
k++;
}
else{
num[k]=' ';
k++;
break;
}
n++;
}
}
}
return n;
}
int main(){
char str[99];
int num[99];
int c;
gets(str);
c=parse(str,num);
printf("Total %d numbers",c);
for(int i=0;i<c ;i++)
printf("%d",num[i]);
return 0;
}
谢谢大家!
这样?
#include <stdio.h>
#include <string.h>
int parse(char s[],char n[])
{
int j,k,i,h=0,len=strlen(s);
for( j=0; j<len ; j++)
{
//n[j]=' ';
if(s[j]<='9'&&s[j]>='0')
{
n[h]=s[j];h++;
}
else
{
n[h]=' ';h++;
}
}
n[h]='\0';
int count=0;
if(s[len-1]<='9'&&s[len-1]>='0')
{
count=1;
}
for(k=0;k<len;k++)
{
if(n[k]<='9'&&n[k]>='0'&&n[k+1]==' ')
{
count++;
}
}
printf("Total %d numbers:\n",count);
int flg=1;
while(flg)
{
flg=0;
for(k=0;k<len-1;k++)
{
if(n[k]==' '&&n[k+1]==' ')
{
for(i=k;i<len;i++)
{
n[i]=n[i+1];
}
flg=1;
}
}
}/**/
if(n[0]==' ')
{
for(i=0;i<len;i++)
{
n[i]=n[i+1];
}
}
puts(n);
}
int main()
{
char s[250],n[250];
gets(s);
parse(s,n);
return 0;
}
if(str[i]>='0'&&str[i]<='9'){
for( ; ;i++){
if(str[i]>='0'&&str[i]<='9')
//编写函数int parse(char *str, int *num),用户输入的字符串中包含有若干个数字,要求通过该函数将数字提取出来,并返回数字个数。
#include <stdio.h>
#include <ctype.h>
#define N 100
int parse(char *str, int *num)
{
int count = 0;
while (*str)
{
if (isdigit(*str))
{
int n = 0;
do
{
n = n * 10 + *str - '0';
str++;
} while (isdigit(*str));
*num++ = n;
count++;
}
else
{
str++;
}
}
return count;
}
int main()
{
char str[N];
int num[N];
int c;
fgets(str, N, stdin);
c = parse(str, num);
printf("Total %d numbers\n", c);
for (int i = 0; i < c; i++)
printf("%d ", num[i]);
printf("\n");
return 0;
}
$ gcc -Wall main.c
$ ./a.out
Abc12dE23 e45i789
Total 4 numbers
12 23 45 789
```
if(str[i]>=0&&str[i]<=9){
改为
if(str[i]>='0'&&str[i]<='9'){
int num[99]改为char num[99]
或者
num[k]=str[i] - '0';
你现在的n记录的是数字总个数,你示例中的n是数字串的个数。