Как написать функцию, которая будет возвращать строку в C - PullRequest
1 голос
/ 30 апреля 2011

Как вернуть строку из функции:

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
Мне нужна оригинальная стоимость, пожалуйста, помогите мне в этом?

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

Я проверил код ниже, и он ведет себя правильно.Не могли бы вы подтвердить.

#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);
}
1 голос
/ 30 апреля 2011

Ваша строка формата 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;  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...