如何编写会返回一个字符串在C
如何从函数返回一个字符串的函数:如何编写会返回一个字符串在C
char * temp;
int main()
{
temp = malloc(129);
double g_symbol_b_amount = 8536.700000;
printf("\n value: %s\t ", format_double_trans_amount(double g_symbol_b_amount));
}
char *format_double_trans_amount(double amount)
{
char amount_array_n1[25];
strcpy(amount_array_n, "");
sprintf(amount_array_n, "%1f", amount);
temp = amount_array_n;
return temp;
}
这里我得到的值:0.000000
我需要的原单值,请帮我这个?
我测试过下面的代码并正确行为。你能确认吗?
#include "stdio.h"
#include "stdlib.h"
char * temp;
char *format_double_trans_amount(double amount)
{
sprintf(temp,"%1f",amount);
return temp;
}
int main()
{
double g_symbol_b_amount = 8536.700000;
temp = (char*) malloc(sizeof(char) * 129);
printf("\n value: %s\n", format_double_trans_amount(g_symbol_b_amount));
free(temp);
}
不,bacchus ..它不适合我。 – jcrshankar 2011-04-30 15:51:13
@jcrshankar你有什么错误吗? – bacchus 2011-04-30 15:57:53
@jcrshankar您使用什么环境编译/测试示例?我已经使用Linux和gcc进行了测试,并且该值已正确打印! – bacchus 2011-04-30 15:59:00
你printf()
格式字符串应该有%s
而不是%f
因为传递的值(从format_double_trans_amount
返回的值)是一个char *
而不是double
。
我想你也应该改变你的format_double_trans_amount()
功能:
char *format_double_trans_amount(double amount)
{
sprintf(temp,"%1f",amount);
return temp;
}
除了'format_double_trans_amount'中的'amount_array_n'不存在之外,哪一个都很好。我怀疑他不明白整个堆栈和堆的东西要么;) – 2011-04-30 15:26:29
@Brian:根据OP,他的代码正在运行,所以它必须存在,无论我们知道在哪里。但是,我已经修改了我的答案,指出它不是必需的。 – 2011-04-30 15:27:57
因为'temp'是全局的,所以都不会从'format_double_trans_amount'返回任何东西。忽略你指出的第一个问题当然重要,他的问题是问你如何从函数返回一个“字符串”。 – 2011-04-30 15:32:26
什么是'amount_array_n'?这是为你编译的吗?你能显示生成的确切输出吗? – 2011-04-30 15:23:49
char amount_array_n1 [25]; – jcrshankar 2011-04-30 15:32:43
修复了格式。 – 2011-04-30 15:36:50