#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int *f(const char *s, int *n /* out */){
if(strncmp(s, "* SEARCH", 8)!=0){
fprintf(stderr, "format error!\n");
*n = 0;
return NULL;
}
s += 8;
const char *p = s;
int v, len, status;
int count = 0;
while((status=sscanf(p, "%d%n", &v, &len))==1){
++count;
p +=len;
}
if(status==0){
fprintf(stderr, "format error!\n");
*n = 0;
return NULL;
}
int *ret = malloc(count * sizeof(*ret));
p = s;
count = 0;
while(EOF!=sscanf(p, "%d%n", &v, &len)){
ret[count++]=v;
p +=len;
}
*n = count;
return ret;
}
int main (void){
int i, n, *nums = f("* SEARCH 1 2 3", &n);
for(i=0; i<n; ++i)
printf("%d ", nums[i]);
printf("\n");
free(nums);
return 0;
}
У вас возникли вопросы или вы просто хотите, чтобы кто-то написал его для вас? Вот подсказка: вы можете посмотреть на 'strtok()'. –
см. Это: http: //stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c –
@JonathanWood Я понятия не имею, как его написать. Я привык к питону. Это не домашнее задание или что-то еще, было бы неплохо просто получить функцию. –