c語言指針+函數小程序
20
程序代碼如下:#include <stdio.h>void find_number(char *string,int *number,int *n);void input_string(char *string);
void main(){ char string[100]; int number[10],n; input_string(string); find_number(string,number,&n); for (int i=0;i<n;i++) printf("%d",number[i]);}
void find_number(char *string,int *number,int *n){ int num=0,k=0,l=0,m=0; for (int i=1;*(string+i)!='\0';i++) { if ((*(string+i)>47&&*(string+i)<58)&&(*(string+i-1)<48||*(string+i-1)>57)) l++,k++,*n=*n+1; for (int j=i;k;j++) { num=num*10+*(string+i)-48; if ((*(string+j)<48&&*(string+j)>57)&&(*(string+j-1)>47||*(string+j-1)<58)) k--; } if (l) { *(number+m)=num; m++; l--; num=0; } }}void input_string(char *string){ gets(string);}
這小程序的目的是先輸入一個任意字符串,然後輸出其中的數字,如輸入“dsa321fdsf32”那麼就應該輸出“321 32”。。。求大神看看啊~~~在線等````
補充:代碼如下:
#include <stdio.h>
void find_number(char string[],int number[],int *n);
void input_string(char string[]);
void main()
{
char string[100];
int number[10],n;
input_string(string);
find_number(string,number,&n);
for (int i=0;i<n;i++) printf("%d",number[i]);
}
void find_number(char string[],int number[],int *n)
{
int num=0,k=0,l=0,m=0;
for (int i=1;*(string+i)!='\0';i++)
{
if ((*(string+i)>47&&*(string+i)<58)&&(*(string+i-1)<48||*(string+i-1)>57)) l++,k++,*n=*n+1;
for (int j=i;k;j++)
{
num=num*10+*(string+i)-48;
if ((*(string+j)<48&&*(string+j)>57)&&(*(string+j-1)>47||*(string+j-1)<58)) k--;
}
if (l)
{
*(number+m)=num;
m++;
l--;
num=0;
}
}
}
void input_string(char string[])
{
gets(string);
}
最佳回答:
你如果只是為了實現你說的功能,我想這樣就行了:
#include <stdio.h>
void find_number(char *string);
void input_string(char *string);
void main()
{
char string[100];
int number[100];
input_string(string);
find_number(string);
}
void find_number(char *string)
{
int i;
for (i=0;*(string+i)!='\0';i++)
if (*(string+i)>='0'&&*(string+i)<='9')
printf("%d",*(string+i)-'0');
}
void input_string(char *string)
{
gets(string);
}