输入一个字符串,内有数字和非数字字符,例如:a123x456 17960? 302tab58768。将其中连续的数字作为一...

mac2022-06-30  72

#include <stdio.h>#define MAXLEN 20

int *countInteger(char *p, int flag);

main(){ char *host = "1a2 123456g78 69 89999"; int m,i; int *Noint; int L; int Arr[MAXLEN]; Noint = Arr; Noint = countInteger(host,0); L = countInteger(host,1); for(i=0;i<L;i++) { Arr[i] = *(Noint+i); } for(i=0;i<L;i++) { printf("%d ", Arr[i]); }}

int *countInteger(char *p, int flag){ int i, j, k=0, l; int n=0; int array[20]; int *ch; int temp; int m; ch = array; while(*(p+n) != '\0') { n++; } for(i=0;i<n;i++) { if(*(p+i)>='0' && *(p+i)<='9') { k++; // how many integer l = k-1; //printf("%d ", k); temp = *(p+i) - '0'; for(j=i+1;j<n;j++) { if(*(p+j)>='0' && *(p+j)<='9') { temp = 10*temp + (*(p+j) - '0'); i++; } else { break; } } *(ch+l) = temp; } } if(flag == 0) { return ch; } else { return k; }}

 

 

 

 

version 2:

#include <stdio.h>#define MAXLEN 20

int countInteger(char *p, int a[]);

main(){ char *host; char s[100]; int i, Noint; int Arr[MAXLEN];

printf("输入字符串:"); gets(s); host=s; Noint = countInteger(host,Arr); for(i=0;i<Noint;i++) { printf("%d ", Arr[i]); }}

int countInteger(char *p, int a[]){ int i, j, k=0, l; int n=0; int temp; int m; while(*(p+n) != '\0') { n++; } for(i=0;i<n;i++) { if(*(p+i)>='0' && *(p+i)<='9') { k++; // how many integer l = k-1; //printf("%d ", k); temp = *(p+i) - '0'; for(j=i+1;j<n;j++) { if(*(p+j)>='0' && *(p+j)<='9') { temp = 10*temp + (*(p+j) - '0'); i++; } else { break; } } a[l] = temp; } } return k; }

 

 

转载于:https://www.cnblogs.com/bluelinlin/archive/2013/05/20/3087989.html

最新回复(0)