获取以逗号分隔的数字

Nah*_*hum 2 c c89

我得到以下字符串:

"312 ,22 ,+12 , -12 , 5331"

数字之间可以有多个空格.

我需要将它转换为这样的数组:

int arr[] = {312,22,-12,12,5331};

有没有一个漂亮和优雅的方式与C89这样做?

Gan*_*aro 5

使用strtok+ atoi:

# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int main(int argc, char const *argv[])
{
    char numbers_str[] = "312 ,22 ,+12 ,-12 ,5331", *currnum;
    int numbers[5], i = 0;

    while ((currnum = strtok(i ? NULL : numbers_str, " ,")) != NULL)
        numbers[i++] = atoi(currnum);

    printf("%d\n", numbers[3]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)