, , , undefined, , , .. , , , , , while. , , , , , .
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
#define ARRAY_SIZE 10
size_t store_numbers (const char *s, long *array, size_t elems)
{
long value;
char *endptr;
size_t index = 0;
while (*s)
{
while (!isdigit(*s) && *s != '\0')
s++;
errno = 0;
value = strtol(s, &endptr, 10);
if (s == endptr) break;
if (errno != 0) { }
if (array && index < elems) array[index] = value;
index++;
s = endptr;
}
return index;
}
void print_numbers (const long *a, size_t elems)
{
size_t idx;
for (idx = 0; idx < elems; idx++) printf("%ld\n", a[idx]);
return;
}
int main (void)
{
size_t found, stored;
long numbers[ARRAY_SIZE];
found = store_numbers("..1....10..20....30...40....50...80...", numbers, ARRAY_SIZE);
if (found > ARRAY_SIZE)
stored = ARRAY_SIZE;
else
stored = found;
printf("Found %zu numbers, stored %zu numbers:\n", found, stored);
print_numbers(numbers, stored);
return 0;
}