Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> itoa() 
V
    Опции темы
yngwie19
Дата 28.4.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



здравствуйте почему при использовании функции itoa() у меня после преобразованного числа идут непонятные символы?
Код

char szText[17];
int nNumber = 5;

itoa(nNumber,szText,10);

MessageBox(NULL,szText,"",MB_OK);

user posted image

или мне нужно обнулять массив szText ?

Это сообщение отредактировал(а) yngwie19 - 28.4.2009, 09:33
PM MAIL   Вверх
zim22
Дата 28.4.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(yngwie19 @  28.4.2009,  09:33 Найти цитируемый пост)
или мне нужно обнулять массив szText ?

попробуйте обнулить. разве это так сложно?
Код

char szText[17] = {0};



--------------------
PM MAIL   Вверх
yngwie19
Дата 28.4.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



zim22, мне казалось что за меня это должна делать itoa()  smile

Добавлено через 4 минуты и 22 секунды
а точему если nNumber сделать равным 55, то даже при обнуленном массиве вылезают иероглифы?
PM MAIL   Вверх
zim22
Дата 28.4.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(yngwie19 @  28.4.2009,  09:39 Найти цитируемый пост)
а точему если nNumber сделать равным 55, то даже при обнуленном массиве вылезают иероглифы?

не знаю. спросите в разделе по WinApi


--------------------
PM MAIL   Вверх
azesmcar
Дата 28.4.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



yngwie19
Вот так что выводит?
Код

MessageBoxА(NULL,szText,"",MB_OK);

PM   Вверх
Ln78
Дата 28.4.2009, 10:00 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



yngwie19
язык и компилятор какие? Возможно, MessageBox вызывается MessageBoxW - уникодовская, а тип char а не wchar. С++ должен ругаться, а в C может и пройти, выдавая такую ерунду.

Цитата(zim22 @  28.4.2009,  10:37 Найти цитируемый пост)
разве это так сложно?

char szText[17] = {0};


Круто, обнулить непонятно где находящуюся ячейку памяти, конечно, несложно. Как говорится, дурное дело нехитрое. 
PM MAIL   Вверх
zim22
Дата 28.4.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Ln78 @  28.4.2009,  10:00 Найти цитируемый пост)
Круто, обнулить непонятно где находящуюся ячейку памяти, конечно, несложно. Как говорится, дурное дело нехитрое. 

Вы способны заметить разницу между обнулением единичной ячейки памяти по индексу 17
Код

char szText[17] = 0;

и инициализацию всех элементов массива szText нулями?
Код

char szText[17] = {0};



--------------------
PM MAIL   Вверх
azesmcar
Дата 28.4.2009, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



удалено (неверно понял написанное)

Это сообщение отредактировал(а) azesmcar - 28.4.2009, 10:10
PM   Вверх
mrbrooks
Дата 28.4.2009, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(Ln78 @  28.4.2009,  10:00 Найти цитируемый пост)
Круто, обнулить непонятно где находящуюся ячейку памяти, конечно, несложно. 

почему это не известно где? ведь задан массив из 17 символов?
PM MAIL   Вверх
Ln78
Дата 28.4.2009, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Цитата(zim22 @  28.4.2009,  11:04 Найти цитируемый пост)
Вы способны заметить разницу между обнулением единичной ячейки памяти по индексу 17


zim22, пардон. Обычно способен, сейчас не заметил. Вероятно, предлагаемый способ "лечения" смутил, подумал, что обнуление предлагается делать уже после вызова функции.
PM MAIL   Вверх
mrbrooks
Дата 28.4.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



другое дело что обнулить есть смысл через memset



PM MAIL   Вверх
Acer
Дата 28.4.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: нет
Всего: 8



yngwie19, воспользуйтесь функцией MessageBoxA, может, как написал Ln78, по умолчанию вызывается MessageBoxW
PM MAIL   Вверх
yngwie19
Дата 28.4.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

Репутация: нет
Всего: нет



Acer, MessageBoxA помогло всем спасибо!
PM MAIL   Вверх
mrbrooks
Дата 28.4.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(Acer @  28.4.2009,  10:11 Найти цитируемый пост)
по умолчанию вызывается MessageBoxW 

Генерилась бы ошибка мол не могу преобразовать из char[17]  в LPCWSTR.
Кстати она и так вызывается. Просто при MessageBoxA происходит преобразование строк из анси в юникод и вызывается MessageBoxW.  
PM MAIL   Вверх
azesmcar
Дата 28.4.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



mrbrooks

В си наверняка выдаст warning. Просто люди не обращают внимание на предупреждения.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0906 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.