Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Aleksanteri
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 5
#1

Sprintf и классы - C++

06.10.2013, 19:16. Просмотров 464. Ответов 4
Метки нет (Все метки)

Уважаемые, нужна помощь.

Есть следующий класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class tText {
    public:
        char *text;
        int x;
        int y;
        float R, G, B, A;
        tText(int _x, int _y, char *_text, 
            float _R, float _G, float _B, float _A):x(_x), y(_y), text(_text),
            R(_R), G(_G), B(_B), A(_A) { };
        void draw();
        void setText(char *string, double time);
};
И метод класса setText:
C++
1
2
3
void tText::setText(char *string, double time) {
    sprintf(this->text,"%s : %lf",string, time);
}
При компиляции выдает:
Unhandled exception at 0x5E43F8AC (msvcr110d.dll) in snake2d.exe: 0xC0000005: Access violation writing location 0x0032CA9C.

Если же у вас есть более элегантный и лаконичный способ перевода double/int в char*, прошу совета.
С меня лайки!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2013, 19:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Sprintf и классы (C++):

sprintf и %
wsprinfA(buff,"%dasda"); как сделать так, что бы этот код работал ?...

Sprintf
Первый круг проходит спокойно, а на втором ошибку выбивает, но я не могу найти...

Странный sprintf
Структура, ее получение и вывод: struct User { int unk1; int unk2; int...

Аналог sprintf
Здравствуйте! Допустим есть функция которая наращивает строку, добавлением...

Sprintf кириллица
добрый день, а почему вот такое не работает ? char buf; sprintf_s(buf,...

Sprintf не работает
Почему при запуске программа вырубается ? проблема где-то в sprintf ...

4
novi4ok
551 / 504 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.10.2013, 19:20 #2
точно при компиляции выдает?
где и как инициализируется указатель text?
0
Aleksanteri
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 5
07.10.2013, 11:57  [ТС] #3
C++
1
2
3
4
double t=10.0;
char *d;
tText ttime(WINDOW_WIDTH/2,WINDOW_HEIGHT/2,"PAUSE!",0.0f,0.0f,1.0f,1.0f);
ttime.setText("Time is: ",t);
И соответственно в функции отрисовки
C++
1
ttime.draw();
Все компилится и работает, если не использовать метод setText(); Обычную строку он выводит, но если к ней нужно добавить double, то нет.

Простите если ответил неверно, т.к. конкретно в знании понятий я слабоват.

Добавлено через 16 часов 27 минут
Вверх, пожалуйста. Очень нужен хелп.
0
Fyret
200 / 186 / 45
Регистрация: 30.07.2013
Сообщений: 392
07.10.2013, 12:17 #4
В вызове конструктора tText Вы инициализируете член text временной C-строкой "PAUSE!". Конструктор отрабатывает, строка уничтожается, указатель text указывает неизвестно куда. И Вы потом пытаетесь туда что-то записать.

Зачем вообще Вы в C++ коде используете C-строки и C-функции типа sprintf?
0
novi4ok
551 / 504 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
07.10.2013, 12:29 #5
если уж так хочется через *опу, то напиши

C++
1
2
char *pBuf = "PAUSE!";
tText ttime(WINDOW_WIDTH/2,WINDOW_HEIGHT/2, pBuf, 0.0f,0.0f,1.0f,1.0f);
0
07.10.2013, 12:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 12:29
Привет! Вот еще темы с решениями:

Траблы с функцией sprintf
Всем добрый день. У меня есть структура. После того как я забил все поля...

printf sprintf не понятно
Почему в printf строка отображается нормально, а sprintf вместо строки...

Ошибка с sprintf в C++ Opengl
sprintf(sz, "You win. Time: %d F2 - Restart game Esc - Exit", sec); ...

c++ , sprintf() и Дух Плюсов
Здравствуйте! Как вам известно во многих учебниках по С++ говорится, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru