编译错误“无法忽略空值,因为它应该是”在C编程中[重复]

问题描述 投票:1回答:2

我得到了那个无法弄清楚的错误。我查看了相关的问题,但我没有给出一个含义,有人告诉我哪个部分需要修复?

[错误]空值不应该被忽略,因为它应该是

我的代码

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);

}
c compiler-errors return-value
2个回答
5
投票

检查这一行

 result = getEdge(arr,toke);

你试图捕获返回类型为void的函数的返回值。

请记住,void是一个不完整的类型,它与任何其他类型都不兼容(在这种情况下,LHS是char),因此编译器正确地抱怨。

那说,

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

里面的功能也看起来不太正确。检查那里的类型。


1
投票

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

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

在这里,您正在使用一个返回char值的函数

char result;
result = getEdge(arr,toke);

所以解决方案可能是改变你的功能:

char getEdge(char str[],char *token)
{
    ......
    return char_value;
}
© www.soinside.com 2019 - 2024. All rights reserved.