Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2011, 13:11   #1
Slava-D
Новичок
Джуниор
 
Регистрация: 25.05.2011
Сообщений: 3
По умолчанию Проблема с sprintf

Привет Всем!

помогите пожалуйста c простой програмкой

#include <stdio.h>

int main()
{

char *my_data;
char *buffer;
my_data = "0000-00-00";
sprintf(buffer,"%s",my_data);
printf(buffer);

}

компимится норм, при запуске вылетает в кору.
freebsd 8.1 gcc version 4.2.1 20070719

Последний раз редактировалось Slava-D; 25.05.2011 в 13:23.
Slava-D вне форума Ответить с цитированием
Старый 25.05.2011, 13:54   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

А что ты, собственно, пытаешься сделать?
Ты объявляешь два указателя на символьные переменные, потом пытаешься присваивоить указателю строковое значение...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 25.05.2011, 13:55   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Slava-D

при запуске вылетает в кору.

ясен пень вылетает, не выделена память под buffer
Rififi вне форума Ответить с цитированием
Старый 25.05.2011, 14:39   #4
Slava-D
Новичок
Джуниор
 
Регистрация: 25.05.2011
Сообщений: 3
По умолчанию

Цитата:
при запуске вылетает в кору.

ясен пень вылетает, не выделена память под buffer
как её выделить?

Цитата:
А что ты, собственно, пытаешься сделать?
Ты объявляешь два указателя на символьные переменные, потом пытаешься присваивоить указателю строковое значение...
char buffer[11]; - тоже самое

в общем проблемма такая нужно строчки скопировать в sql запросик

char *date;
char *time;
char *name;
char buffer[256];

date = "2011-05-24";
time = "14:37:24";
name = "в С-х я валенок";

sprintf(buffer,"insert into myTable values('%s','%s','%s')",date,time,n ame);

работать не хочет! (((
Slava-D вне форума Ответить с цитированием
Старый 25.05.2011, 14:41   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Mandrivnyk
Цитата:
потом пытаешься присваивоить указателю строковое значение...
если он данные по этому указателю изменять не будет, не страшно. хотя конечно лучше писать const char *str = "123";

а вот то, что под буфер память не выделена, действительно проблема, как уже сказали
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 25.05.2011, 14:52   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Slava-D

в общем проблемма такая нужно строчки скопировать в sql запросик

проблемма в том, что ты пишешь на "Си с классами" и используешь ненадежные функции и типы данных

вот код на C++

Код:
std::string date = "2011-05-24";
std::string time = "14:37:24";
std::string name = "в С-х я валенок";

const std::string sql = boost::str(boost::format("insert into myTable values('%s','%s','%s')")
    % date % time % name
);
Rififi вне форума Ответить с цитированием
Старый 25.05.2011, 14:54   #7
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

это только что касается формирования sql-запроса.
В БД попытки вливать данные типа DATETIME как строки, а не как параметры, часто превращаются в веселый гемор с форматами.
Rififi вне форума Ответить с цитированием
Старый 25.05.2011, 14:57   #8
Slava-D
Новичок
Джуниор
 
Регистрация: 25.05.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
Slava-D

в общем проблемма такая нужно строчки скопировать в sql запросик

проблемма в том, что ты пишешь на "Си с классами" и используешь ненадежные функции и типы данных

вот код на C++

Код:
std::string date = "2011-05-24";
std::string time = "14:37:24";
std::string name = "в С-х я валенок";

const std::string sql = boost::str(boost::format("insert into myTable values('%s','%s','%s')")
    % date % time % name
);
попробую, спасибо, еще выяснил что если date = "abcdefgh"; все хорошо, но если появляются "-" сразу в core

Последний раз редактировалось Slava-D; 25.05.2011 в 15:11.
Slava-D вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование строк как в sprintf() LukS Общие вопросы C/C++ 2 15.10.2009 17:28
Ошибка линвки (функция sprintf) LukS C/C++ Сетевое программирование 21 25.01.2009 13:58
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37