Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > itoa() |
Автор: yngwie19 28.4.2009, 09:33 | ||
здравствуйте почему при использовании функции itoa() у меня после преобразованного числа идут непонятные символы?
![]() или мне нужно обнулять массив szText ? |
Автор: zim22 28.4.2009, 09:37 | ||
попробуйте обнулить. разве это так сложно?
|
Автор: yngwie19 28.4.2009, 09:39 |
zim22, мне казалось что за меня это должна делать itoa() ![]() Добавлено через 4 минуты и 22 секунды а точему если nNumber сделать равным 55, то даже при обнуленном массиве вылезают иероглифы? |
Автор: azesmcar 28.4.2009, 09:59 | ||
yngwie19 Вот так что выводит?
|
Автор: Ln78 28.4.2009, 10:00 |
yngwie19, язык и компилятор какие? Возможно, MessageBox вызывается MessageBoxW - уникодовская, а тип char а не wchar. С++ должен ругаться, а в C может и пройти, выдавая такую ерунду. Круто, обнулить непонятно где находящуюся ячейку памяти, конечно, несложно. Как говорится, дурное дело нехитрое. |
Автор: zim22 28.4.2009, 10:04 | ||||||
Вы способны заметить разницу между обнулением единичной ячейки памяти по индексу 17
и инициализацию всех элементов массива szText нулями?
|
Автор: azesmcar 28.4.2009, 10:07 |
удалено (неверно понял написанное) |
Автор: mrbrooks 28.4.2009, 10:09 | ||
почему это не известно где? ведь задан массив из 17 символов? |
Автор: Ln78 28.4.2009, 10:09 | ||
zim22, пардон. Обычно способен, сейчас не заметил. Вероятно, предлагаемый способ "лечения" смутил, подумал, что обнуление предлагается делать уже после вызова функции. |
Автор: mrbrooks 28.4.2009, 10:10 |
другое дело что обнулить есть смысл через memset |
Автор: Acer 28.4.2009, 10:11 |
yngwie19, воспользуйтесь функцией MessageBoxA, может, как написал Ln78, по умолчанию вызывается MessageBoxW |
Автор: yngwie19 28.4.2009, 10:20 |
Acer, MessageBoxA помогло всем спасибо! |
Автор: mrbrooks 28.4.2009, 10:22 |
Генерилась бы ошибка мол не могу преобразовать из char[17] в LPCWSTR. Кстати она и так вызывается. Просто при MessageBoxA происходит преобразование строк из анси в юникод и вызывается MessageBoxW. |
Автор: azesmcar 28.4.2009, 10:33 |
mrbrooks В си наверняка выдаст warning. Просто люди не обращают внимание на предупреждения. |
Автор: zim22 28.4.2009, 11:00 | ||||
сначала я хотел с вами не согласиться, т.к. думал, что ассемблерный код, сгенерированный для
гораздо меньше, чем вызов memset Но я был удивлён, когда посмотрел дизассемблерный листинг: char buf[256] = {0};
Т.е. memset всё-равно вызывается ![]() |