Albertdjy 发表于 2020-2-7 11:38:51

怎么返回结构体对象的值

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


int addNum(struct Sort *num);
int getinput(struct Sort *num);


struct Sort
{
        int x;
        struct Sort *next;
};

int getinput(struct Sort *num)
{
        printf("请输入一个整数:");
        scanf("%d",num->x);
        putchar('\n');
        printf("input:%d\n",num->x);
        return num->x;
}

int addNum(struct Sort **head)
{
        struct Sort *num;
        num = (struct Sort *)malloc(sizeof(struct Sort));
        int n;
       
        getinput(num);
        n = getinput(num);
       
        return n;
}

int main(void)
{
        struct Sort *temp;
        struct Sort *num = NULL;
        int n;
       
        printf("输入-1结束输入\n");
        while(1)
        {
                addNum(&num);
                n = addNum(&num);
                printf("%d",n);
                if (n == -1)
                {
                        break;
                }
        }
       
        return 0;
}

我想让函数addNum返回用户输入的值来进行判断是否退出循环,但是这个样子返回的值是一大串数字,请问应该如何修改。

召唤风云 发表于 2020-2-7 13:36:36

把30行和45行删掉。他们重复了。每一个函数不要单独调用。

f-wind 发表于 2020-2-7 13:53:26

scanf("%d",num->x);
使用
scanf("%d",&num->x);

Albertdjy 发表于 2020-2-7 19:24:48

f-wind 发表于 2020-2-7 13:53
scanf("%d",num->x);
使用
scanf("%d",&num->x);

能告诉我为什么吗?不是很理解。num不是指针吗,为什么还要取地址?

Albertdjy 发表于 2020-2-7 19:32:17

召唤风云 发表于 2020-2-7 13:36
把30行和45行删掉。他们重复了。每一个函数不要单独调用。

这的确也是个BUG,谢谢。

召唤风云 发表于 2020-2-7 19:51:15

Albertdjy 发表于 2020-2-7 19:24
能告诉我为什么吗?不是很理解。num不是指针吗,为什么还要取地址?

你输入的是x的值,而不是num的值。所以需要取地址。

Albertdjy 发表于 2020-2-7 20:50:05

召唤风云 发表于 2020-2-7 19:51
你输入的是x的值,而不是num的值。所以需要取地址。

懂了,谢谢指导
页: [1]
查看完整版本: 怎么返回结构体对象的值