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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2011, 14:04   #1
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
По умолчанию Не выводится MessageBox с цифрами

Здравствуйте. У меня почемуто падает программа, когда я хочу вывести переменную типа int в сообщениеи MessageBox. А компилятор ошибку не находит.
Надо переменную типа "char" перевести в тип "int", потом произвести с ней матиматические действия, и вывести результат на экран.
Вот код:

char a[256] = "12345";
int b = (int)a;
b = b + 123;
char c = (char)b;

MessageBoxA (NULL, (LPCSTR)c, "title", NULL);

Помогите пожалуйста решить эту проблему.
Юрий90 вне форума Ответить с цитированием
Старый 26.05.2011, 14:09   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы не пробовали целочисленную переменную в строку сначало перевести?
а то понаставили приведений типов...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.05.2011, 15:29   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Код:
int b = (int)a;
Как вы думаете, что в этой строчке у вас происходит?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 26.05.2011, 15:31   #4
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
По умолчанию

теперь уже программа не падает, но почемуто выводится только одна цифра, самая первая, а остальных почемуто не видно.

char a[256] = "12345";
int b = (int)a;
b = b + 123;
wchar_t c[100];
swprintf(c, L"%d", b);

MessageBoxA (NULL, (LPCSTR)c, "title", NULL);
Юрий90 вне форума Ответить с цитированием
Старый 26.05.2011, 15:35   #5
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Код:
int b = (int)a;
Как вы думаете, что в этой строчке у вас происходит?
переменная типа char присваивает свое значение типу int
Юрий90 вне форума Ответить с цитированием
Старый 26.05.2011, 15:37   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

у вас переменная a имеет тип char*, а не char
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 26.05.2011, 15:52   #7
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
По умолчанию

если писать так

char a[256] = "12345";
int b = (int)a;
b = b + 123;
char c[100];
ltoa(b,c,100);

MessageBoxA (NULL, (LPCSTR)c, "title", NULL);

то выводятся четыре каких то иероглифа вместо цифр
Юрий90 вне форума Ответить с цитированием
Старый 26.05.2011, 15:52   #8
Юрий90
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 12
По умолчанию

если писать так

char a[256] = "12345";
int b = (int)a;
b = b + 123;
char c[100];
ltoa(b,c,100);

MessageBoxA (NULL, (LPCSTR)c, "title", NULL);

то выводятся четыре каких то иероглифа вместо цифр
Юрий90 вне форума Ответить с цитированием
Старый 26.05.2011, 15:55   #9
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Похоже мое замечание вы пропустили...

atoi()
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 26.05.2011, 17:00   #10
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Юрий90

проблема в неумелом использовании олд-скульных средств и непонимании принципа работы с массивами и указателями.

вариант для домохозяек и джедаев в одном флаконе:

std::string s = "12345";
std::stringstream ss(s);

int n;
ss >> n;

n += 123;

ss.str("");
ss.clear();

ss << n;
ss >> s;

MessageBoxA(NULL, s.c_atr(), "zzz", MB_OK);
Rififi вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор с римскими цифрами WideSide Помощь студентам 1 04.05.2011 20:31
Проблема с цифрами CrazyTosser Помощь студентам 8 07.02.2011 09:00
Пробелы между цифрами duny99 Помощь студентам 9 06.02.2011 13:24
Прога со строками и цифрами anybkarnak Общие вопросы C/C++ 1 08.03.2010 21:19