Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aleksanteri
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 5
#1

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

06.10.2013, 19:16. Просмотров 452. Ответов 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 и % - C++
wsprinfA(buff,"%dasda"); как сделать так, что бы этот код работал ? экранирование % не помогает = \ Добавлено через 1 минуту ...

Sprintf - C++
Первый круг проходит спокойно, а на втором ошибку выбивает, но я не могу найти где я ошибся: char Random2and4(char ***Massive) { ...

Sprintf не работает - C++
Почему при запуске программа вырубается ? проблема где-то в sprintf #include <iostream> #include <cstdlib> #include...

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

Аналог sprintf - C++
Здравствуйте! Допустим есть функция которая наращивает строку, добавлением строки/символа/числа или остальных объектов из которых можно...

Ошибка с sprintf в C++ Opengl - C++
sprintf(sz, "You win. Time: %d F2 - Restart game Esc - Exit", sec); error C4996: 'sprintf': This function or variable may be...

4
novi4ok
551 / 504 / 8
Регистрация: 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
186 / 172 / 13
Регистрация: 30.07.2013
Сообщений: 359
07.10.2013, 12:17 #4
В вызове конструктора tText Вы инициализируете член text временной C-строкой "PAUSE!". Конструктор отрабатывает, строка уничтожается, указатель text указывает неизвестно куда. И Вы потом пытаетесь туда что-то записать.

Зачем вообще Вы в C++ коде используете C-строки и C-функции типа sprintf?
0
novi4ok
551 / 504 / 8
Регистрация: 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
Привет! Вот еще темы с ответами:

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

printf sprintf не понятно - C++
Почему в printf строка отображается нормально, а sprintf вместо строки вставляет "(null)" ? что нужно сделать со строкой что бы она...

Sprintf отрабатывает по разному - C++
Если просто запустить программу то sprintf округляет тип double до целых, если в режиме отладки то нет. То есть в первом случае выдет 23 во...

Траблы с функцией sprintf - C++
Всем добрый день. У меня есть структура. После того как я забил все поля структуры мне нужно сформировать одну большую строку из этих...


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

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

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