PDA

View Full Version : مبتدی: خواندن اعداد یک رشته



pajoohesh
دوشنبه 24 خرداد 1395, 11:39 صبح
سلام دوستان عزیز
سوالم اینه که چطور می تونم یک رشته رو به عنوان ورودی دریافت کنم و اعداد داخل اون رو نمایش بدم مثال :
"reza 122 hassan 226 akbar 12"

1-9-7-2
چهارشنبه 26 خرداد 1395, 01:05 صبح
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>

#define MAXSIZE 0b1000000000
#define _BLANK__ ' '

unsigned long int get_num (unsigned long int, char*, int, char*);

int main () {
char *s = malloc (MAXSIZE);
char *d = malloc (2*MAXSIZE);

strcpy (s, "9Z9 1.ABC 123 0.123 1.23 12.3 123.0 A1.2 12.A3. 1..23...4.777.5 1.2.3 1 .2.3 1. 2 3");

printf ("Numbers found: (%lu)\n", get_num (MAXSIZE, d, _BLANK__, s));

free (s); free (d);

return (EXIT_SUCCESS);
}

unsigned long int get_num (unsigned long int dbuf, char *d, int sep, char *s) {
char *p = d; int dig, dot; unsigned long int n;
for (n = dig = dot = 0; *s != '\0' && dbuf > 0; *s++) {
if (isdigit (*s)) {
if (dot == 1)
*p++ = '.', --dbuf, dot = -1;
else if (dig == 0)
++n;
*p++ = *s, --dbuf, dig = 1;
}
else if (dig == 1 || dot == 1) {
if (*s == '.' && dot == 0)
dot = 1;
else
*p++ = sep, --dbuf, dot = 0;
dig = 0;
}
}
return (n);
}