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