gpt4 book ai didi

c - 如何使用 C 中的函数接受作为一种数据类型并存储在定义的结构中?

转载 作者:行者123 更新时间:2023-11-30 15:46:40 25 4
gpt4 key购买 nike

我遇到麻烦,返回我定义的结构,我的函数 scan_sci 应该采用从输入源获取一个以科学计数法表示正数的字符串,并将其分解为多个组件以存储在 scinot_t 结构中。输入示例为 0.25000e4

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

typedef struct{
double mantissa;
int exp;
}sci_not_t;

int scan_sci (sci_not_t *c);

int main(void){

sci_not_t inp1, inp2;

printf("Enter the mantissa in the range [0.1, 1.0) then its exponent: ");
scan_sci(&inp1);
printf("Enter second number with same specifications as above: ");
scan_sci(&inp2);






system("PAUSE");
return 0;
}

int scan_sci (sci_not_t *c){

int status;
double a;
int b;

status = scanf("%lf %d", &c->mantissa, &c->exp);

a = c->mantissa;
b = c->exp;
*c = pow(a,b);

if (status == 2 && (c->mantissa >= 0.1 && c->mantissa < 1.0) ){
status = 1;
}else{
printf("You did not enter the mantissa in the correct range \n");
status = 0;
}


return (status);
}

sci_not_t sum(sci_not_t c1, sci_not_t c2){

return c1 + c2;
}

sci_not_t product(sci_not_t c1, sci_not_t c2){

return c1 * c2;
}

最佳答案

这里有很多错误。首先,您的 scan_sci 参数是错误的。您没有传递指向您声明的结构的指针,而是传递一个字符数组。您的声明应如下所示:

scinot_t scan_sci( scinot_t *collection );

为了符合向结构传递指针的要求,您需要将声明更改为以下内容。请注意,返回指向在堆栈上声明的变量的指针是非常糟糕的做法,并且容易出错,因此我们要改变 scan_sci 中的结构。

void scan_sci( scinot_t *collection );

现在,您需要在调用函数之前创建结构并使用 & 运算符传递其内存地址。

关于c - 如何使用 C 中的函数接受作为一种数据类型并存储在定义的结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155902/

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