【问题标题】:return array from subroutine in c program从c程序中的子程序返回数组
【发布时间】:2019-12-04 07:16:48
【问题描述】:

我有一个带有子程序的程序,它处理输入到子程序中的数字。

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


float test_subroutine(float x,float y)
{
    float a=105.252342562324;
    float b=108.252234256262;
    float d;
    float e;
    char var;

    d=x*a;
    e=y*b;

    sprintf(var,"%0.2f %0.2f",d,e);

    return var;
 }



 int main()
 {
      float variable[2];
      variable=test_subroutine(2.5,3.5);

 }

现在有了这个程序,我的想法是我有一个像这样的字符串或变量:

368.386 270.63

无论这是字符串还是数组,我都希望能够将其拆分为两个单独的浮点数 368.386 和 270.63。我如何调整这个程序来完成这个?

【问题讨论】:

  • 首先编译yopur程序:char不是float,不能将字符串写入char
  • 创建一个包含该数组的结构。然后就可以正常退货了。

标签: c arrays string subroutine


【解决方案1】:

看看strtok。然后 malloc 一个你想要的数组并填充它。

【讨论】:

    【解决方案2】:

    您提到的标题和您显示的代码似乎没有意义,因为它们不匹配。如果您关心从函数返回数组,请参考此

    How to return a local array from a C/C++ function?

    您编写的代码返回一个字符,但函数的返回类型是浮点数,因此编译时这本身会引发错误。

    关于您最后提出的问题,将“368.386 270.63”转换为两个单独的浮点数,在 C 中我们没有称为字符串的本机数据类型,按照惯例,该语言使用字符数组(参考 @ 987654322@了解更多详情), 现在要拆分字符数组,您可以使用strtok() 函数。 要将字符数组转换为浮点数,请使用atof() 函数。这将返回一个双精度数,因为您希望返回浮点数,所以将其显式转换为浮点数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多