![]() |
|
Модераторы: bsa |
![]()
|
|
| Alexey68 |
|
|||
|
Alexey ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Здравствуйте All.
Прошу помощи в решении вопроса. код:
если компилирую в Borland C++ 2007 всё нормально, если в Visual studio 2008, то пишет: "sscanf: невозможно преобразовать параметр 1 из 'BYTE [3]' в 'const char *'" какие варианты преобразования? И главный вопрос: При запуске одной и той же программы на XP результат вывода симоволов один, а на Win 7 отличается (на EN и на RU версии одинаково), код: unsigned const char* my_key[] = {"1","A","Z","S","3"}; printf("My_key = %s\n", my_key); в чём причина? вот отличия: http://rghost.ru/52300212 Это сообщение отредактировал(а) Alexey68 - 9.2.2014, 07:36 |
|||
|
||||
| feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Правильно пишет))) Потому что sscanf ожидает в первом параметре строку (заканчивающуюся терминирующим символом '\0', чего у Вас нет и в помине) из знаковых символов (char), Вы же отправляете туда массив из беззнаковых символов (BYTE - это unsigned char). Кроме того, в отличии от printf scanf требует адрес на целочисленную переменную: Вы передаёте в функцию printf в качестве параметра для формата %s не строку, а указатель на массив строк, в результате у Вас происходит печать массива указателей (то есть массива целочисленных значений) как массива символов. В XP и в Win 7 просто значения указателей разные, соответственно и вывод разный. Предлагаю варианты:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
| Alexey68 |
|
|||
|
Alexey ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Спасибо feodorv.
но в данном случае у меня проблема не с выводом (его использовал чтобы увидеть значения), а с тем чтобы преобразовать число: int count = 26534212349; в массив символов (BYTE buffer2[] = {0x12, 'Z', 5, 7};) |
|||
|
||||
| feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Какой вопрос, такой и ответ)))
Про это в первом сообщении ни слова. Всё равно не ясно толком, что нужно сделать. Даже число задано с переполнением. Сделайте:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
| Alexey68 |
|
|||
|
Alexey ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
из числа int count = 26534212; мне необходимо получить аргумент для функции:
void rc4_init( unsigned const char* key, unsigned int key_length ) и ещё вопрос, каким образом использовать TCHAR в качестве пути и имени файла после получения из функции: TCHAR path[MAX_PATH]; (GetModuleFileName(NULL, path, MAX_PATH) == 0) далее: fFile = fopen(path, "rb"); и к: if(CreateProcess(NULL, path,NULL,NULL,false,NULL,NULL,NULL,&suStartUpInformation,&piProcessInformation)) как это реализовать? Это сообщение отредактировал(а) Alexey68 - 10.2.2014, 08:55 |
|||
|
||||
| feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Вам что точно нужно? Открыть файл или запустить процесс? Если второе, то причём тут первое? Добавлено через 6 минут и 18 секунд Если будете использовать этот код только на одной платформе, то сойдёт. Если предполагаете переносить на другую, то лучше, всё-таки, так:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
| Alexey68 |
|
|||
|
Alexey ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
>>Вам что точно нужно? Открыть файл или запустить процесс? Если второе, то причём тут первое?
и первое и второе |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
| Alexey68 |
|
|||
|
Alexey ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 10.4.2013 Репутация: нет Всего: нет |
Большое спасибо feodorv и xvr за помощь в решении моих вопросов, штудирую типы данных.)
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |