gpt4 book ai didi

c - 如何使用结构将指针值从单独的函数传递回 main

转载 作者:行者123 更新时间:2023-11-30 16:56:08 25 4
gpt4 key购买 nike

#include <stdio.h>
#define G 9.81

//使用的结构体称为USER_INPUT

typedef struct
{
double weight;
double drag;
double time;

} USER_INPUT;

void getInput(USER_INPUT *); //function prototype - which i think works

void main()

{
USER_INPUT input;
getInput(&input);

//这是输入值应该显示的地方,但它不会返回任何内容

    printf("Weight = ", input.weight);
printf("Drag = ", input.drag);
printf("Time =", input.drag);


}

//我从用户那里获取输入的单独函数。它有效,但值没有传递回 main

void getInput (USER_INPUT *inpPtr)
{
printf("Please enter the weight:");
scanf("%lf", &inpPtr->weight);
fflush(stdin);
printf("Please enter the drag:");
scanf("%lf", &inpPtr->drag);
fflush(stdin);
printf("Please enter the time:");
scanf("%lf", &inpPtr->time);
fflush(stdin);
return(0); //<- idk if this is right either

}

最佳答案

您描述的问题可以归因于您在 printf() 语句中遗漏了格式说明符。另外,您尝试显示 .drag 两次:

printf("Weight = %g\n", input.weight);
printf("Drag = %g\n", input.drag);
printf("Time = %g\n", input.time);

函数getInput()不会将值传递回main()(毕竟,它的返回类型为void! ),但它修改了 USER_INPUT 结构 input 字段中存储的值,该结构存在于 main() 范围内。

这里还有一些其他问题。 main() 函数始终返回一个 int,您应该这样声明它:

int main(void){}

或者,如果您使用命令行参数,您可以执行以下操作:

int main(int argc, char *argv[]){}

或者:

int main(int argc, char **argv){}

刷新输入流是未定义的行为,尽管它在某些系统上有效。为了可移植性,最好不要这样做。您可以使用类似以下内容:

while (getchar() != '\n')
continue;

调用 scanf() 后丢弃输入流中不需要的字符。

最后,返回类型为 void 的函数不需要 return 语句,尽管有些人喜欢使用 return ; 来使返回显式。但是,从这样的函数返回 int 值肯定是错误的。

关于c - 如何使用结构将指针值从单独的函数传递回 main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049606/

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