gpt4 book ai didi

c - 指针问题,赋值

转载 作者:行者123 更新时间:2023-11-30 20:10:55 26 4
gpt4 key购买 nike

我正在尝试为我的函数的变量根分配一个值,但似乎不起作用。我不明白这个问题。

hw7.c:155:7:警告:赋值使指针来自整数而不进行强制转换[默认启用] root = 负载(&fp, 大小);

此代码创建一个双向链表,然后以插入排序方式向其添加内容,然后删除

我遇到的问题位于这一行的 main 中root = 负载(&fp, 大小);

struct node * LOAD(FILE *stream, int size){
int x;
char *tempLine = NULL;
size_t length = 0;
const char delim[] = " ";
char *token;
char *name;
char *ADCheck;
struct node *root;

rewind(stream);


for(x = 0; x < size; x++){
getline(&tempLine, &length, stream);
token = strtok(tempLine, delim);
name = token;
token = strtok(NULL, delim);
ADCheck = token;

if(( strcasecmp(ADCheck, "a") == 0) ) {

root = insertNode(root, name);
}else{
root = delete(root, name);
}
length = 0;
tempLine = NULL;
}
free(tempLine);
return root;
}


int main(){
FILE *fp;
int size;
struct node *root;

root = NULL;

fp = fopen("hw7.data", "r");

size = SCAN(&fp);

root = LOAD(&fp, size);

Free(root);

return 0;
}

最佳答案

我认为有两个错误。正如经常发生的那样,一个掩盖了另一个。

struct node * LOAD(FILE *stream, int size){

定义LOAD,全部大写。当您尝试调用它时,

root = Load(&fp, size);

您使用了未声明的Load。由于它未声明,C 编译器假定它返回 int。由于 root 被定义为指针,因此您会收到 int-signed-to-pointer 警告。

修复该问题后,您将收到不同的错误。 LOAD 的第一个参数(您将重命名为 Load)是 FILE *。您的变量 fp 是一个 FILE *,但您传递的地址是 &fp,即 FILE ** >。因此你会得到一个类型错误。

如果你有指针,请传递指针。它是一种值(value),就像其他值(value)一样;将其作为一个传递。不要将指针的地址传递给函数,除非您希望函数更改指针指向的位置。

关于c - 指针问题,赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42731828/

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