Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > int to const char


Автор: box 17.2.2011, 17:39
есть данные из контейнера map : freq[input_string]
пытаюсь подставить данные в запрос :
Код

char a[3];
int b = freq[input_string];
*a = (char)b;//конвертируем в char

sql = "INSERT INTO banned (ip, host, hit) VALUES ('" +test[0]+ "','" +test[1]+ "', '" +a+ "')";
if(mysql_query(&conn,sql.c_str()) != 0){fprintf(stderr, "Error: can't execute INSERT-query\n");exit(1);}

но в базу в поле hit попадают крякозябры типа !?3 это когда тип таблицы var char а когда int то 0
а должно попадать целое число .
где косяк ?

Автор: mes 17.2.2011, 17:42
Вы хотите представить int как строку ? 
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
или
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
...


Автор: box 17.2.2011, 17:47
в моем компиляторе нет функции itoa а с sprintf я уже намучался  , компилятор ругается , может вы приведе пример на основе sprintf 

Автор: kometa_75 17.2.2011, 17:56
Цитата(box @ 17.2.2011,  17:47)
в моем компиляторе нет функции itoa а с sprintf я уже намучался  , компилятор ругается , может вы приведе пример на основе sprintf
Код

char a[16] = {0}; /* Не надо жадничать. В 3 символа у вас влезет без усечения максимум 99, или это будет не С-строка*/

int b = freq[input_string];

/*убрать эту ересь*/
*a = (char)b;//конвертируем в char

/*вставить это*/
sprintf( a, "%d", b );

sql = "INSERT INTO banned (ip, host, hit) VALUES ('" +test[0]+ "','" +test[1]+ "', '" +a+ "')";
if(mysql_query(&conn,sql.c_str()) != 0){fprintf(stderr, "Error: can't execute INSERT-query\n");exit(1);}

где-то так
можно ещё глянуть на http://www.cplusplus.com/reference/clibrary/cstdlib/strtol/

Автор: fish9370 18.2.2011, 10:12
вы со своим C++ реально тупеете.. делать нужно проще..

Код

char sql[4096];
snprintf(sql, sizeof(sql), "INSERT INTO banned (ip, host, hit) VALUES ('%s', '%s', %d)", test[0], test[1], a);
if(mysql_query(&conn,sql) != 0) {
     fprintf(stderr, "Error: can't execute INSERT-query\n");
     exit(1);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)