gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:34:13 26 4
gpt4 key购买 nike

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

typedef struct intArray {
int *numbers;
}

假设我需要解析的字符串名为 numString 且等于“8162”。我已经为该结构(此实例名为 newIntArray)及其包含的数字子项进行了 malloc。我还创建了一个名为 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;
}

最佳答案

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

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

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

关于c - 将字符串解析为 int 数组 - 收到警告 "makes pointer from integer without a cast",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49387070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com