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

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

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

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

05.09.2013, 16:19. Просмотров 681. Ответов 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++
#include &lt;cmath&gt; #include &lt;iostream&gt; using namespace std; void convert_temp(double *p); int main(){ double n; cout&lt;&lt;&quot;введем...

Преобразование указателя из char в int и double - C++
указатель sadr является типом char мне нужно перопределить его на типы на int и double int a; double b; void cr(char **sadr) { ...

Преобразование указателя void к указателю на структуру - C++
Здравствуйте! Можете объяснить эти строки в программе? int cmp(const void* p1, const void* p2) { return...

Проверить правильность преобразования указателя - преобразование из void* - C++
Есть один абстрактний и один не абстрактний клас. В виртуальний метод передаеться указатель на void. Можно как-то проверить правильность...

Преобразование указателя одного типа в указатель другого - C++
Помоги пожалуйста составить программу: Преобразовать указатель одного типа в указатель другого.

Проверка указателя на массив - C++
Как нам проверить, что указатель указывает на пямять, выделенную в куче, а не на стеке? например такой код для простоты. Так как в таком...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 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
Сообщений: 368
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
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 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)
?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 18:33     Преобразование указателя в массив
Еще ссылки по теме:

вывод указателя на массив на массив - C++
#include &lt;iostream&gt; using namespace std; void main() { char i={{'g'},{'d'},{'r'},{'a'},{'f'}}; for (int k=0; k&lt;5;...

Как из указателя получтлся массив? - C++
Возможно глупый вопрос,но как unsigned char *e превратился в массив? int add(CStash* s ,const void* element){ if(s-&gt;next &gt;=...

Разадресация указателя в массив из указателей - C++
float *A, **B; A = new float ; B = new float* ; for (int i = 0; i &lt; n; i++) { //*(A + i) = rand()%1000 / 100; *(A + i) = n -...

Возврат указателя на массив из функции - C++
День добрый, коллеги по цеху. Не откажите в нужде java программисту в познаниях нативного кода. Запутался я совсем в указателях. Как...

Запись указателя на строку в массив - C++
Всем привет! Вот у меня проблемка появилась, не знаю, что делать. Помогите пожалуйста! Есть структура struct golf { char...

Обнулить массив с помощью указателя - C++
1.как обнулить массив с помощью указателя?? 2.как передать в функцию одномерный и двумерные массивы???


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

Или воспользуйтесь поиском по форуму:
Abraziv__
-52 / 3 / 0
Регистрация: 05.02.2013
Сообщений: 368
05.09.2013, 18:33  [ТС]     Преобразование указателя в массив #6
Так быстрее?

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

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