编译器错误";无效值不应被忽略,因为它应该是;在C语言编程中

编译器错误";无效值不应被忽略,因为它应该是;在C语言编程中,c,compiler-errors,return-value,C,Compiler Errors,Return Value,我犯了一个无法理解的错误。我查看了相关的问题,但我没有给出一个有人告诉我需要修复哪个部分的意思 [Error]未按应忽略的方式忽略无效值 我的密码 void getEdge(char str[],char *token){ *token = strtok(str, "_,"); while (token != NULL ) { // printf("%s\n", token); token = strtok(NULL, "_,");

我犯了一个无法理解的错误。我查看了相关的问题,但我没有给出一个有人告诉我需要修复哪个部分的意思

[Error]未按应忽略的方式忽略无效值

我的密码

void getEdge(char str[],char *token){
    *token = strtok(str, "_,");
    while (token != NULL )
    {
      //  printf("%s\n", token);
        token = strtok(NULL, "_,");
    }

}

void getEdge(char str[],char *token);

int main () {
    char arr[] = "A_B_10,A_F_6,B_C_6,C_B_10,D_A_3";
    char *toke;
    char result;
    result = getEdge(arr,toke);
    printf("%s\n",result);

}
检查这条线

 result = getEdge(arr,toke);
您试图捕获返回类型为
void
的函数的返回值

请记住,
void
是一个不完整的类型,并且它与任何其他类型都不兼容(在本例中,LHS是
char
),因此编译器会正确地抱怨

也就是说

*token = strtok(str, "_,");

里面的函数看起来也不是很正确。检查那里的类型。

这里您正在声明一个没有返回值的函数:

void getEdge(char str[],char *token)
这里我们使用的是一个返回char值的函数

char result;
result = getEdge(arr,toke);
因此,一个解决方案可能是在以下方面更改您的功能:

char getEdge(char str[],char *token)
{
    ......
    return char_value;
}

您已声明
getEdge
不返回任何内容,但仍希望将其返回值存储在变量中。更改函数声明并返回函数结果。@Li357谢谢您的建议。我试试……你希望得到什么样的结果?你得到了什么输出?如果您想要通过在
getEdge()
中打印获得的输出,那么您需要一个非常复杂的返回值,以便能够使用单个
返回来检索它。这是什么编译器?错误的措辞似乎有点不同。在定义函数之后声明函数有点奇怪。无害,但不是必需的。