0

我正在尝试在 Ansys Scade Suite 中将 float32 转换为 char[255]。我在这里使用了一个自定义函数,它接收一个 float32 输入并输出一个 255 的 char 数组。它可以在下面看到。

#include <stdlib.h>
#include "kcg_types.h"

kcg_char OP_StringToFloat(
    /* string/ */  const kcg_float *d
 )
{

kcg_char a[255];
sprintf(a, "%f", d);
return a;
}

kcg_char 是一个字符。

由于某种原因,自定义函数使程序崩溃,留下无法追踪的系统错误 (SYSERR)。任何使用 Scade Suite 的人都可以帮助我吗?这是基于模型的编程顺便说一句。这是连接的外观。 模型

4

1 回答 1

0

您的数据类型和指针到处都是 - 您正试图返回对临时本地缓冲区的引用。建议成语:

kcg_char* OP_StringToFloat( const kcg_float d, kcg_char* buffer )
{
    srintf(buffer, "%f", d ) ;
    return buffer;
}

示例调用:

kcg_char a[255] ;
kcg_float d = 3.125 ;
OP_StringToFloat( d, a ) ;

您可以使用返回值来将调用用作参数,例如:

printf( "%s\n", OP_StringToFloat( d, a ) ) ;

请注意,该调用仅在是or的别名sprintf()时才有效。kcg_floatfloatdouble

于 2021-08-04T09:42:27.143 回答