#include <stdio.h> #include <stdlib.h> int pow_jh(int x,int y); int main() { char str[50],*pstr=str; gets(str); int a[50],g=0,w=0,i=0,number=0,k;//g:多少个整数;w:几位;number:整数 while((*(pstr+i))!=‘\0‘) { if(*(pstr+i)>=‘0‘&&*(pstr+i)<=‘9‘) { w++; } else { if(w>0) { g++; k=1; while(k<=w) { number+=(*(pstr+i-k)-48)*pow_jh(10,k-1); k++; } a[g-1]=number; number=0; w=0; } } i++; } if(w>0)//因为上面的while语句判断条件是不等于‘\0‘,所以当字符串以数字结尾时无法进入while()中输出最后几个数字,所以在while()应再加个if()。 { g++; k=1; while(k<=w) { number+=(*(pstr+i-k)-48)*pow_jh(10,k-1); k++; } a[g-1]=number; number=0; } for(i=0;i<g;i++) { printf("%d ",a[i]); } printf("\n%d",g); return 0; } int pow_jh(int x,int y) { int i; int sum=1; if(y==0) return 1; else { for(i=0;i<y;i++) sum=sum*x; } return sum; }
input:
a123x456 17960? 302tab5876
output:
123 456 17960 302 5876
5
原文:http://www.cnblogs.com/LuRenJiang/p/6441209.html