gpt4 book ai didi

c - 段错误存储输入并添加两个指针

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:17 25 4
gpt4 key购买 nike

我在执行此操作时遇到段错误,但编译器未显示任何错误。如果我问的是非常基本的问题,请原谅我,因为我很长时间以来都不擅长用 C 编写代码。

这是我的代码:

#include<stdio.h>
#include<stdlib.h>

struct link_list {
int x;
int y;
struct link_list *next;
struct link_list *prev;
};

int inp_sum (int *x, int *y){
printf("Enter x:");
scanf("%d",&x);
printf("Enter y:");
scanf("%d",&y);
printf("%d+%d",x,y);
int z;
z=*x+*y;
return z;
}

void main(){
struct link_list *first_node;
first_node=malloc(sizeof(struct link_list));
first_node->next=0;
first_node->prev=0;

struct link_list *cur;
cur = malloc(sizeof(struct link_list));
while(inp_sum(&cur->x,&cur->y)<100){
cur->next=malloc(sizeof(struct link_list));
cur=cur->next;
cur->next=0;
cur->prev=0;
}

print_llist(first_node);
}

print_llist(struct link_list *root){
struct link_list *current;
current=malloc(sizeof(struct link_list));
current = root;
while ( current != NULL ) {
printf( "%d\n", current->x );
current = current->next;
}
}

我想做的是创建一个链接列表节点并在输入总和小于 100 时扩展链接列表,为此我想将 x、y(节点成员)的指针发送到返回它们的函数在获取输入并将输入存储到它们之后求和。

但我认为我在传递指针或添加指针时做错了。

问候

最佳答案

xy 已经是指针,所以:

    printf("Enter x:");
scanf("%d",&x);
// ^ address of int *
printf("Enter y:");
scanf("%d",&y);

//^ int *的地址

应该是:

    printf("Enter x:");
scanf("%d",x);
// ^ address of int
printf("Enter y:");
scanf("%d",y);
// ^ address of int

在您编写的代码中,您读入了 int 指针,例如覆盖 int 的地址,然后取消引用它(另外),这会导致段错误。

关于c - 段错误存储输入并添加两个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822546/

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