在C中读取数字数组

Read array of numbers in C

我在网上练习算法题,遇到输入问题:

我会读书

1 2 3 -4 5

使用

int *p = (int*)malloc(sizeof(int) * size);
while(scanf("%d", p++) != EOF) {
    //
}

但是问题的输入定义为

[1, 2, 3, -4, 5]

如何将这种格式的输入读入整数数组?

我相信这可以帮助您入门,

int main () {
    int size = 5;
    int *p = (int*)malloc(sizeof(int) * size);

    char buf[200] = {0};

    fgets(buf, 200, stdin);

    char *token = strtok(buf, "[, ");
    while(token) {
        *p = atoi(token);
        printf("next is %d,\n", *p);
        token = strtok(NULL, ", ");
        ++p;
    }
}

请注意,这假设您只输入了 5 个数字。

我认为最好将其作为字符读取,然后使用 atoi() 将其转换为数字。

char buffer[10],tmp;

这将作为 ASCII 数字的缓冲区

while(tmp!=']')
    {
        tmp=getchar();
        if(tmp>=0x30 && tmp<0x3A)
            buff[i++]=tmp;
        else if(tmp!='[')
        {
            buff[i]='[=11=]';
            arr[j++]=atoi(buff);    //numbers stored to arr array
            i=0;
        }
    }

此代码将从屏幕上读取每个字符并识别数字并将其添加到缓冲区。然后当遇到另一个字符时,我们知道这个数字已经完成并转换并存储到数组中。