gpt4 book ai didi

c - 将返回的指针分配给一个新数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:31 24 4
gpt4 key购买 nike

我是新的 C 程序员。我定义了一个函数,它解析一行并生成 token 。这些 token 中的每一个都将保存在一个 token 数组中。所以我为此创建了一个字符串数组。我定义的函数返回这个数组。现在我想将返回的数组分配给一个新数组,但出现错误:

incompatible types when assigning to type ‘char *[5]’ from type ‘char **’. 

所以我不知道如何处理这个问题。这是完整的代码;

#include <string.h>
#include <stdio.h>

char ** parseLine(char * str){
char del[2]=",";
char * token;
//Array of strings
char * tokenArr[5];
token=strtok(str,del);
int i=0;
while(token!=NULL && i<5){
//save each new token in the array of tokens
*(tokenArr+i)=*token;
token=strtok(NULL,del);
i++;
}
return tokenArr;
}

int main(int argc, char * argv []){
char str[120]="Achon, Adkins, 3459345,cs,usa";
char * tokenArray [5];
tokenArray=parseLine(str);
}

最佳答案

您正在尝试将一个 char 分配给此处的 char 指针:

*(tokenArr+i)=*token;

token 是一个指针,所以分配给它,而不是它指向的值。

在函数中,您试图返回一个局部数组tokenArr。返回数组和/或返回局部变量是不可能的。返回指向在堆上分配的数组的指针:

char** tokenArray;
tokenArray=parseLine(str);

char** parseLine(char* str){
...
char** tokenArr = malloc(sizeof(*tokenArr)*5);
...
return tokenArr ;
}

在解决此问题时,请考虑检查您调用的函数的返回值是否存在无效值。然后您将如何知道您实际处理了多少元素以及您将如何获取该信息。

关于c - 将返回的指针分配给一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348149/

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