编译器错误";无效值不应被忽略,因为它应该是;在C语言编程中
我犯了一个无法理解的错误。我查看了相关的问题,但我没有给出一个有人告诉我需要修复哪个部分的意思 [Error]未按应忽略的方式忽略无效值 我的密码编译器错误";无效值不应被忽略,因为它应该是;在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, "_,");
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()
中打印获得的输出,那么您需要一个非常复杂的返回值,以便能够使用单个返回来检索它代码>。这是什么编译器?错误的措辞似乎有点不同。在定义函数之后声明函数有点奇怪。无害,但不是必需的。