将字符串解析为 int 数组 - 收到警告 "makes pointer from integer without a cast"

Parse string to int array - Getting warning "makes pointer from integer without a cast"

我需要创建一个函数,接收一串数字并将其解析为单个整数数组,但我在这样做时遇到了问题。保存数组的结构设置如下:

typedef struct intArray {
    int *numbers;
}

假设我需要解析的字符串名为 numString 并且等于“8162”。 我已经为结构(这个名为 newIntArray 的实例)和它持有的数字子元素分配了内存。我还创建了一个名为 i 的整数。这是我当前的代码:

for (i = 0; i < 4; i++) {
    newIntArray->numbers[i] = atoi(numString[i]);
    i++;
}

当我尝试此操作时,我收到一条警告,提示我正在从没有强制转换的整数创建指针。知道我做错了什么吗?

编辑:

这是我现在拥有的全部功能:

Int40 *stringToIntArray(char *numString) {
    int i = 0;
    struct intArray *newIntArray = malloc(sizeof(struct intArray));
    newIntArray->numbers = malloc(40 * sizeof(int));
    if (newIntArray == NULL || numString == NULL) {
        return NULL;
    }
    for (i = 0; i < 4; i++) {
        newIntArray->numbers[i] = atoi(numString[i]);
        i++;
    }
    return newIntArray;
}

atoi 函数需要一个字符串,即指向字符串的 char * 作为其参数。您传入的是 numString[i],这是一个 char。这就是错误的来源。

由于要转换单个数字,因此可以从每个字符中减去 '0'。因为 0-9 的字符具有连续的字符编码,所以这导致数字字符被转换为等效数字。例如,'5' - '0' 结果为 5

newIntArray->numbers[i] = numString[i] - '0';