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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> вывод (char*) через printf, с явным преобразованием uint в char* 
V
    Опции темы
gmx
  Дата 28.7.2011, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет всем!

Получаю Access Violation при попытке вевести char* значение через print.
При этом, есть еще явное преобразование unsigned int в char* предварительно.

Из-за чего ошибка приозошла в моем приложении?

Код

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct Header
{
public:
    char s;
} h;

void main(void)
{
    struct byte
    {
        unsigned b1 : 1;
        unsigned b2 : 1;
        unsigned b3 : 1;
        unsigned b4 : 1;
        unsigned b5 : 1;
        unsigned b6 : 1;
        unsigned b7 : 1;
        unsigned b8 : 1;
    };

    union
    {
        char var;
        struct byte z;
    };
    
    cin >> h.s;
    var = (int)h.s;
    
    printf((char*)z.b1);
}


Заранее спасибо
PM MAIL   Вверх
spyswamp
Дата 28.7.2011, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Потому что ты не почитал документацию про printf(). Твой (char*)z.b1 воспринимается как формат, а следующий по стеку адрес выводится по этому формату. Что там за адрес - одному богу известно. Вот тебе и access violation.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
gmx
Дата 28.7.2011, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(spyswamp @  28.7.2011,  15:17 Найти цитируемый пост)
Потому что ты не почитал документацию про printf(). Твой (char*)z.b1 воспринимается как формат, а следующий по стеку адрес выводится по этому формату. Что там за адрес - одному богу известно. Вот тебе и access violation. 

Нет! Потому что, просто забыл, что в printf() нужно было юзать всякие константы типа %i и тд , отвык уже после красот std 
PM MAIL   Вверх
spyswamp
Дата 28.7.2011, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



gmx, я тебе про это и написал. Зацени получившийся код.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
gmx
Дата 28.7.2011, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



spyswamp, нет, ты написал, что я не прочитал. Ключевая разница в забыл.
PM MAIL   Вверх
spyswamp
Дата 29.7.2011, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



gmx, ты улавливаешь разницу между "почитал" и "пРочитал"? Не удивительно, что ты накосячил в такой простой фигне. smile


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
gmx
Дата 29.7.2011, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



spyswamp, фанат журнала Cosmo? Это, по-моему ты разницы не улавливаешь, что я именно прочитал.

Это сообщение отредактировал(а) gmx - 29.7.2011, 10:57
PM MAIL   Вверх
bsa
Дата 29.7.2011, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



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


Новичок



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

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



Цитата(bsa @  29.7.2011,  11:12 Найти цитируемый пост)
gmx, бегом читать Ответы на часто задаваемые вопросы

Может кто-нибудь удалит спам, который получился, начиная с индекса [2] - ?
Достаточно оставить первые два сообщения и закрыть тему.
PM MAIL   Вверх
bsa
Дата 29.7.2011, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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




M
bsa
Если ответ на вопрос получен, то пометь тему решенной

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


Новичок



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

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



bsa, в теме спама - много, удалить начиная с topic[2] - надо.
PM MAIL   Вверх
bsa
Дата 29.7.2011, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



 smile gmx, я сам принимаю решения, что удалять, а что нет. Пометь тему решенной и прекращай писать сообщения.
PM   Вверх
gmx
Дата 29.7.2011, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



bsa, ну вот и проблема Рашки - основная  smile местное чиновье работает в стиле "как хочу, так ворочу", ты сам наруешь правила форума, почитай их, ты уже был обязан удалить начиная со второго сообщения
PM MAIL   Вверх
bsa
Дата 29.7.2011, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



 smile Почитай: Правила, пункт 3
тема закрыта
PM   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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