Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2009, 15:07   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию массив

Здравствуйте! Как можно сделать объем массива именно такой, сколько информации поступает?

получаю информацию от клиента
recv(connection,a,1000,0);

но она не всегда равна 1000 байт... может послать меньше... мне нужно что бы массив a[] был такого размера, сколько послано информации, а не так что сначало он равен 1000 - a[1000]; а потом из него вычетается лишнее...

Последний раз редактировалось Артэс; 05.09.2009 в 15:09.
Артэс вне форума Ответить с цитированием
Старый 05.09.2009, 15:28   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

может sizeof(a)?
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 05.09.2009, 17:04   #3
Cakeinpanic
Пользователь
 
Аватар для Cakeinpanic
 
Регистрация: 10.05.2009
Сообщений: 21
По умолчанию

сделать не массив ,а указатель

например int *a=new int[1000];
Cakeinpanic вне форума Ответить с цитированием
Старый 05.09.2009, 17:05   #4
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

массив то динамичный

recv(connection,a,1000,0);
a = new char[sizeof(a)];

так что ли?)
Артэс вне форума Ответить с цитированием
Старый 05.09.2009, 17:08   #5
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

можно подробнее про указатели? не совсем понимаю... данные будут поступать через указатель в массив?
Артэс вне форума Ответить с цитированием
Старый 05.09.2009, 17:08   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Артэс
массив то динамичный

recv(connection,a,1000,0);
a = new char[sizeof(a)];

так что ли?)
Нет. и вообще смысле делать так нет, разница лишь в том где будут размещаться эти 1000 байт в стеке или в куче. Динамический массив, который будет таким, как размер полученных данных сделать нельзя, только в случае если вы получаете данные от своей же программы, то можете сделать сначала отправку размера данных, затем динамическое выделения памяти под эти данные, после чего непосредственно получение этих данных
netrino вне форума Ответить с цитированием
Старый 05.09.2009, 17:41   #7
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

я получаю данные от браузера... просто данных меньше чем массив... а delete []a; и потом создание массива по новой не помогает так как надо... если данных пришло еще меньше, чем в прошлый раз... то со временем можно наблюдать после нужных данных, остатки бывших данных, и потом пропуски строк... и в конце концов программа вообще крашает... вот я и хотел что бы массив был 1 к 1 с объемом данных.
Артэс вне форума Ответить с цитированием
Старый 05.09.2009, 17:46   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

recv() возвращает количество полученных байт. Делайте так:
Код:
int len = recv(connection,a,1000,0);
a[len] = 0;
тогда будет корректная строка.
netrino вне форума Ответить с цитированием
Старый 05.09.2009, 17:57   #9
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

знаете, а помогло! спасибо)
Артэс вне форума Ответить с цитированием
Старый 05.09.2009, 20:19   #10
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Можно сделать двойной пакет. Сначала посылаете размер всего пакета, выделяете память, а потом посылаете собственно пакет(информацию). Так делают для больших объемов информации.
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив Настенька..Блонди Помощь студентам 3 12.06.2009 00:01
массив Настенька..Блонди Общие вопросы Delphi 0 11.06.2009 21:00
Массив KREGI Помощь студентам 2 05.03.2009 17:35
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
Массив! vlad1991 Паскаль, Turbo Pascal, PascalABC.NET 4 06.11.2008 22:09