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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译错误“无法忽略空值,因为它应该是”在C编程中[重复]相关的知识,希望对你有一定的参考价值。

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

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

我的代码

void getEdge(char str[],char *token){
    *token = strtok(str, "_,");
    while (token != NULL )
    {
      //  printf("%s
", 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
",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;
}

以上是关于编译错误“无法忽略空值,因为它应该是”在C编程中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程中出现的纠错英文语句是什么意思?

c语言编程怎么测试程序的对错

linux下c编程怎么编译

linux中执行c语言程序,段错误是怎么回事啊??谢谢!!!

c 编程中 mysql.h 的链接器错误

c编程链表编译但segfaults