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

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

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

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

28.05.2014, 02:24. Просмотров 193. Ответов 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 пусто.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 02:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Тема из раздела "Непонятки в++" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

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

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

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

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс "вентилятор" содержащий в себе классы:...

6
xtorne21st
28.05.2014, 02:26
  #2

Не по теме:

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

0
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 298
28.05.2014, 02:29  [ТС] #3
Цитата Сообщение от xtorne21st Посмотреть сообщение
Тему из раздела "Непонятки в++" нужно перенести в "Непонятки в WinApi"
Да, разделом наверное ошибся. Но массив же по с++.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 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.)
0
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 298
28.05.2014, 02:53  [ТС] #5
Да, теперь понял, тут опять всё дело в моей иногда невнимательности а не в чем либо еще.

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

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

Не по теме:

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

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

0
Croessmah
28.05.2014, 02:58
  #6

Не по теме:

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

0
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 298
28.05.2014, 03:02  [ТС] #7
В моём случае опасен, потому что пока я отлаживаю программу, чудеса случаются именно тогда когда в массивах мусор всякий, другие переменные страдать начинают потерей своих не так давно полученных значений.
0
28.05.2014, 03:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 03:02
Привет! Вот еще темы с ответами:

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include <iostream> #include...


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

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

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