Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 294
#1

Тема из раздела "Непонятки в++" - C++

28.05.2014, 02:24. Просмотров 184. Ответов 6
Метки нет (Все метки)

Здравствуй народ, у кого какие есть версии, почему так работает:
C++
1
2
char comp_Num[20];
WideCharToMultiByte(CP_ACP, 0, Num_Oper, -1, comp_Num, (int)strlen(comp_Num), NULL, NULL);
А так не работает:
C++
1
2
char comp_Num[20] = {0,};
WideCharToMultiByte(CP_ACP, 0, Num_Oper, -1, comp_Num, (int)strlen(comp_Num), NULL, NULL);
?
Не работает в том смысле, что во втором варианте в comp_Num пусто.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 02:24     Тема из раздела "Непонятки в++"
Посмотрите здесь:

Непонятки с оператором "delete" У меня изумление. Крашится программа (Qt5.5) Win 8 - C++
Я никак не могу найти ошибку, из-за которой срабатывание операторы delete приводит к крашу программы. Я пытался отыскать проблему в том,...

напишите программу! тема "динамическое распределение памяти"! - C++
Таблица футбольного чемпионата, в котором участвуют n команд, задана своей верхней правой частью в виде последовательности чисел 0, 1 или 3...

напишите программу!!! тема "работа с символьными данными"!!! - C++
Прочитать из файла строку символов. Удалить в этой строке каждый символ * и повторить каждый символ, отличный от *. Новую строку не...

Тема научной работы по предмету "Алгоритмизация и программирование" - C++
Помогите с темой для научной работы по предмету Алгоритмизация и программирование.

Тема-обсуждение для "Алгоритмов сортировок" - C++
Сообщения выделены из закреплённой темы: http://www.cyberforum.ru/cpp-beginners/thread27084.html #include <iostream> #include...

С++/алгоритм/Тема:"Анализ производительности алгоритмов" - C++
Преобразовать одномерный массив,состоящий из n целых элементов,таким образом,чтобы сначала располагались все положительные элементы,а потом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
28.05.2014, 02:26
  #2

Не по теме:

Тему из раздела "Непонятки в++" нужно перенести в "Непонятки в WinApi"

fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 294
28.05.2014, 02:29  [ТС]     Тема из раздела "Непонятки в++" #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
Тему из раздела "Непонятки в++" нужно перенести в "Непонятки в WinApi"
Да, разделом наверное ошибся. Но массив же по с++.
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
28.05.2014, 02:31     Тема из раздела "Непонятки в++" #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от fredwriter Посмотреть сообщение
почему так работает:
Массив не инициализирован же, значит strlen(comp_Num) будет читать пока не встретит 0 в памяти
Цитата Сообщение от fredwriter Посмотреть сообщение
А так не работает:
strlen(comp_Num) вернет 0, а значит функция не будет писать ничего в lpMultiByteStr, т.к. буфера недостаточно.

так же заходим на MSDN и читаем:
cbMultiByte
[in] Size, in bytes, of the buffer pointed to by the lpMultiByteStr parameter. If this value is zero, the function returns the number of bytes required for the buffer. (In this case, the lpMultiByteStr buffer is not used.)
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 294
28.05.2014, 02:53  [ТС]     Тема из раздела "Непонятки в++" #5
Да, теперь понял, тут опять всё дело в моей иногда невнимательности а не в чем либо еще.

Добавлено через 2 минуты
Да тут теперь даже и MSDN не нужен, всё там работало отлично, прямо так как я и написал)

Добавлено через 16 минут

Не по теме:

Но всё таки прикол в этом свойстве с++ есть. Если написать так:

C++
1
char comp_Num[20];
, то массив будет инициализирован мусором, и вообще наверно может быть опасен для другой памяти, используемой программой. Прикол в том что мусор в strlen сработал, и казалось бы, всё отлично до поры до времени

Croessmah
28.05.2014, 02:58
  #6

Не по теме:

Цитата Сообщение от fredwriter Посмотреть сообщение
то массив будет инициализирован мусором, и вообще наверно может быть опасен для другой памяти, используемой программой.
убить и карандашом можно. Так опасен ли карандаш?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 03:02     Тема из раздела "Непонятки в++"
Еще ссылки по теме:

Проверьте код программы (тема "цикл do while в C++") - C++
Проверьте код программы,пожалуйста. #include <iostream> #include <iomanip> #include <math.h> #include <conio.h> #include...

Тема "Строки" Задан текст. Распечатать все слова, содержащие заданный символ. - C++
Нужна програмулька на C++ которая из заданного текста. Распечатает все слова, содержащие заданный символ. Заранее спасибо! :kissing:

Тема: "Указатели". - C++
Составить программу, моделирующую тасование карт в колоде. Принять количество карт равным 52. После тасования раздается 5 карт. Требуется...

Подсчитать, сколько букв "Р", "к", "т" в данной строке - C++
дана строка подсчитать сколько в ней букв Р, к, т. помогите=)


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

Или воспользуйтесь поиском по форуму:
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 294
28.05.2014, 03:02  [ТС]     Тема из раздела "Непонятки в++" #7
В моём случае опасен, потому что пока я отлаживаю программу, чудеса случаются именно тогда когда в массивах мусор всякий, другие переменные страдать начинают потерей своих не так давно полученных значений.
Yandex
Объявления
28.05.2014, 03:02     Тема из раздела "Непонятки в++"
Ответ Создать тему
Опции темы

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