Russian Qt Forum

Программирование => С/C++ => Тема начата: johnpion от Сентябрь 08, 2012, 00:53



Название: (РЕШЕНО) Несколько использований itoa
Отправлено: johnpion от Сентябрь 08, 2012, 00:53
Делаю расширение для sqlite, которое возвращает значение в денежном формате.
Sqlite падает, когда выполняется несколько раз itoa

Код:
#include "sqlite3ext.h"
#include <stdlib.h>
#include <string.h>
SQLITE_EXTENSION_INIT1

static void moneyFunc(
        sqlite3_context *context,
        int argc,
        sqlite3_value **argv
        ){
    char *result;
    char *c = "00";
    char *decStr = ",";

    int sum = sqlite3_value_int(argv[0]);
    int full = sum / 100;
    int dec = sum % 100;

    itoa(full, result, 10);
    itoa(dec, c, 10);

    /*
...
    */

    strcat(result, decStr);
    strcat(result, c);

    sqlite3_result_text(context, result, 8, 0);
}

int sqlite3_extension_init(
        sqlite3 *db,
        char **pzErrMsg,
        const sqlite3_api_routines *pApi
        ){
    SQLITE_EXTENSION_INIT2(pApi)
            sqlite3_create_function(db, "money", 1, SQLITE_ANY, 0, moneyFunc, 0, 0);
    return 0;
}




Название: Re: Падает расшидение для sqlite
Отправлено: LisandreL от Сентябрь 08, 2012, 01:38
Очень сомнительно смотрится каст числа в указатель:
Код
C++ (Qt)
(const char*)result
Что по вашей задумке должен этот код сделать?