我需要创建一个函数,它接受一串数字将它解析为一个单独的int数组,但是我很难这样做。保存数组的结构设置如下:
typedef struct intArray {
int *numbers;
}
让我们说我需要解析的字符串命名为numString并且等于" 8162"。 我已经为结构(这个实例名为newIntArray)和它所拥有的数字子进行了malloced。我还创建了一个名为i的int。这是我目前的代码:
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;
}
答案 0 :(得分:0)
atoi
函数需要一个字符串,即指向字符串的char *
作为其参数。您传递的内容是numString[i]
,这是一个char
。这就是错误的来源。
由于您想要转换单个数字,您可以从每个字符中减去'0'
。由于0-9的字符具有连续的字符编码,因此会将数字字符转换为等效数字。例如,'5' - '0'
会产生5
。
newIntArray->numbers[i] = numString[i] - '0';