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

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

Войти
Регистрация
Восстановить пароль
 
Abraziv__
-52 / 3 / 0
Регистрация: 05.02.2013
Сообщений: 351
#1

Преобразование указателя в массив - C++

05.09.2013, 16:19. Просмотров 609. Ответов 5
Метки нет (Все метки)

Всем привет. Есть указатель с типом const u_char * , известно , что он указывает на N байт. Как преобразовать его в массив;

Пробовал вот так :
C++
1
2
3
const u_char * data; // будем считать что указатель уже задан
u_char * arr = new u_char[N];
arr = ( u_char * ) data;
Если делать так, то заместо данных белиберда какая та.

Вот сам код :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void dispatcher_handler(u_char *param,const struct pcap_pkthdr *header, const u_char *packet)
{
        
    const struct mac_da_sa_type * mac;
    mac = ( struct mac_da_sa_type *) packet;    
    data_packet = ( u_char * ) ( packet + 14 );
    u_char mac_ok[6] = {6,5,4,3,2,1};
    int packet_ok = 0;
    bool mac_good = true;
    for(int i = 0; i < 5 && mac_good; i++)
    {
        if(mac_ok[i] != mac->da_address[i] )
            mac_good = false;
    }
    
    if(mac_good)
    {       
    fwrite(data_packet,sizeof(u_char),sizeof(data_packet),file);            
    }
        
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 16:19     Преобразование указателя в массив
Посмотрите здесь:

вывод указателя на массив на массив C++
Возврат указателя на массив указателей C++
Преобразование указателя из char в int и double C++
C++ Проверка указателя на массив
Преобразование температуры с помощью указателя C++
C++ Преобразование кода без указателя в код с использованием указателя
C++ Преобразование указателя одного типа в указатель другого
Проверить правильность преобразования указателя - преобразование из void* C++
Преобразование указателя void к указателю на структуру C++
Как сделать функцию от указателя на класс и указателя на метод? C++
Определить обработчик исключений на преобразование указателя базового класса на указатель производного класса C++
C++ Почему увеличение указателя на sizeof(тип) не тождественно инкременту этого же указателя?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
05.09.2013, 16:59     Преобразование указателя в массив #2
Цитата Сообщение от Abraziv__ Посмотреть сообщение
for(int i = 0; i < 5 && mac_good; i++)
В этой строчке массив будет на единицу меньше.
Надо i <= 5 или же i < 6
Somebody
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
05.09.2013, 17:30     Преобразование указателя в массив #3
Цитата Сообщение от Abraziv__ Посмотреть сообщение
C++
1
data_packet = ( u_char * ) ( packet + 14 );
Тут всё правильно? При такой расстановке скобок это 14-й пакет, а не 14-й байт.
Abraziv__
-52 / 3 / 0
Регистрация: 05.02.2013
Сообщений: 351
05.09.2013, 17:45  [ТС]     Преобразование указателя в массив #4
Разобрался уже. Да с циклом затупил малясь. Вот решение :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void dispatcher_handler(u_char *param,const struct pcap_pkthdr *header, const u_char *packet)
{       
    u_char mac_ok[6] = {6,5,4,3,2,1};
    bool mac_good = true;
    for(int i = 0; i < 6 && mac_good; i++)
    {
        if(packet[i] != mac_ok[i] )
            mac_good = false;
    }
    
    if(mac_good)
    {       
        fwrite(packet + 14,sizeof(const u_char),header->caplen - 14,file);          
    }
            
}
Somebody
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
05.09.2013, 17:50     Преобразование указателя в массив #5
Цитата Сообщение от Abraziv__ Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
    bool mac_good = true;
    for(int i = 0; i < 6 && mac_good; i++)
    {
        if(packet[i] != mac_ok[i] )
            mac_good = false;
    }
    
    if(mac_good)
C++
1
if (memcmp(packet, mac_ok, sizeof(mac_ok)) == 0)
?
Abraziv__
-52 / 3 / 0
Регистрация: 05.02.2013
Сообщений: 351
05.09.2013, 18:33  [ТС]     Преобразование указателя в массив #6
Так быстрее?

Добавлено через 13 минут
В общем спасибо огромное всем за помощь.
Yandex
Объявления
05.09.2013, 18:33     Преобразование указателя в массив
Ответ Создать тему
Опции темы

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