gpt4 book ai didi

c - 将用户输入存储到链表中 - C

转载 作者:行者123 更新时间:2023-11-30 15:10:03 24 4
gpt4 key购买 nike

我有一个 C 初学者类(class)的作业:我应该创建一个具有一个变量(命名值)和一个指向列表的指针的结构。我应该提示用户输入 5 个值并将它们存储在链接列表中。然后打印出 list 。我不知道如何将输入存储到列表中。我确实编写了一个程序,在其中初始化了 5 个值。但我不知道如何接受输入并将其存储到列表中。

这是我初始化值的工作程序:

#include <stdio.h>

struct list
{
double value;
struct list *nextVal;
};

int main()
{
struct list v1 = {10};
struct list v2 = {17.97};
struct list v3 = {166};
struct list v4 = {2};
struct list v5 = {387.55};
struct list *first;

first = &v1;
v1.nextVal = &v2;
v2.nextVal = &v3;
v3.nextVal = &v4;
v4.nextVal = &v5;
v5.nextVal = NULL;

printf("All the values are: %.2f, %.2f, %.2f, %.2f, %.2f.",
first->value,v1.nextVal->value,v2.nextVal->value,
v3.nextVal->value,v4.nextVal->value);

return 0;
}

这是一个程序,我尝试获取用户输入并将其存储到列表中。 (我只有 2 个值而不是 5 个,因为在尝试使其工作时更容易使用它。)当我编译这个程序时,我没有收到任何错误。当我运行它时,系统会正确提示我输入两个输入值;但是,当程序打印的输出仅将两个值都写入 0 时。我的假设是我将值存储到列表中是错误的 - 因为我不知道它实际上是如何完成的。 (在我的教科书或网上找不到任何信息。)昨晚有人评论了另一个问题,我不得不尝试使用断点来找出问题的确切位置 - 从那时起我一直在试图找出答案,但不还不知道该怎么做。 (我假设这是非常简单的事情 - 但我在网上查看的每个地方,人们都以一种似乎我应该知道他们在说什么的方式解释它 - 但我不知道 - 老实说,即使我可以弄清楚,我仍然不知道如何处理这些信息,因为我找不到任何有关如何将用户输入存储到链接列表中的信息。)无论如何,这是我的试用程序,它符合并运行但两个最终值都为 0:

#include <stdio.h>

struct list
{
double value;
struct list *nextVal;
};

int main()
{
double val1,val2;

printf("Please enter a number: ");
scanf("%f",&val1);
printf("Please enter a number: ");
scanf("%f",&val2);

struct list v1 = {val1};
struct list v2 = {val2};
struct list *first;

first = &v1;
v1.nextVal = &v2;
v2.nextVal = NULL;
printf("The two values entered are %.2f and %.2f.",
first->value,v1.nextVal->value);

return 0;
}

提前谢谢您!我真的是一个初学者 - 所以即使你建议一些 super 简单的东西 - 我可能不知道它是什么......所以请解释一下!谢谢!

最佳答案

scanf("%f",&val1);

%f 需要一个 float 变量,但给定的变量是一个 double。使用 %lf 表示 double

scanf("%lf",&val1);

您的编译器应该为此向您发出警告,您应该始终注意这些警告并解决它们:

warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
scanf("%f",&val1);

一些额外的建议,尽管它们并没有直接解决您的问题:

  • 始终检查函数返回值。具体来说,检查 scanf 以确保解析了预期的输入。如果用户输入意外的内容,代码就会失败。
  • 将代码分解为函数。具体来说,创建一个单独的 insert 函数来将项目添加到链接列表中。
  • 在需要重复代码的地方使用循环。例如 scanf 调用。这样,当您想要接受更多输入时,可以轻松扩展它。

关于c - 将用户输入存储到链表中 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36414400/

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