gpt4 book ai didi

在 C 的子例程中将 float 转换为字符串

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:08 25 4
gpt4 key购买 nike

我正在尝试用 c 编写一个程序,其中我使用子例程来处理子例程中的一些变量并将它们作为数组返回。例如,我有数字 2.5 和 3.5,子例程将这些数字乘以某个值,然后将它们作为包含这两个值的字符串返回。

下面是我正在尝试使用的程序:

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

char 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()
{
char variable;
variable=test_subroutine(2.5,3.5);

}

尝试编译时出现以下错误:

testrun.c: In function ‘char test_subroutine(float, float)’:
testrun.c:21:31: error: invalid conversion from ‘char’ to ‘char*’ [-fpermissive]
sprintf(var,"%0.2f %0.2f",d,e);
^
In file included from testrun.c:1:0:
/usr/include/stdio.h:364:12: error: initializing argument 1 of ‘int sprintf(char*, const char*, ...)’ [-fpermissive]
extern int sprintf (char *__restrict __s,

我该如何解决这个问题?

最佳答案

您正在尝试使用 sprintf 将数据写入 char。查看 sprintf 函数的声明,正如您的编译器建议的那样:

int sprintf(char*, const char*, ...)

它以 char* 作为第一个参数,即:指向缓冲区的指针,用于存储生成的格式化字符串。

你应该这样使用它(请注意我所做的所有更改):

// Return the allocated buffer, which is char*, not char.
char *test_subroutine(float x,float y)
{
float a=105.252342562324;
float b=108.252234256262;
float d;
float e;

char *var = malloc(100); // Allocate a buffer of the needed size.

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

sprintf(var,"%0.2f %0.2f",d,e); // Sprintf to that buffer

return var;
}



int main()
{
char *variable;
variable = test_subroutine(2.5,3.5);
free(variable); // Free the buffer allocated by test_subroutine()
}

关于在 C 的子例程中将 float 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57211018/

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