ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 17.06.2010, 12:52
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
С нами: 9410786

Репутация: 2731


По умолчанию

Код:
recv(s, response, 1024, 0);
Этим кодом я получаю 1024 байта и записываю их в response.
Как получить абсолютно всю информацию, предварительно не зная сколько байтов, и записать все это в один массив символов?

Код:
do
{
 iResult = recv(s, response, 1024, 0);
}
while(iResult > 0);
Этим кодом получается вся информация, но проблема в том, что в response оказываются последние 1024 байта, что очевидно. Необходимо как-то создать буфер неизвестной длины, и в цикле делать конкатенацию буфера вместе с полученной инфой, но как?

Еще как вариант - создать динамический массив, и в цикле расширять его размер, опять вопрос - как?

Спасибо заранее.
 
Ответить с цитированием

  #2  
Старый 17.06.2010, 13:33
herfleisch
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
С нами: 9126697

Репутация: 97
По умолчанию

Цитата:
Сообщение от mailbrush  
Код:
recv(s, response, 1024, 0);
Этим кодом я получаю 1024 байта и записываю их в response.
Как получить абсолютно всю информацию, предварительно не зная сколько байтов, и записать все это в один массив символов?

Код:
do
{
 iResult = recv(s, response, 1024, 0);
}
while(iResult > 0);
Этим кодом получается вся информация, но проблема в том, что в response оказываются последние 1024 байта, что очевидно. Необходимо как-то создать буфер неизвестной длины, и в цикле делать конкатенацию буфера вместе с полученной инфой, но как?

Еще как вариант - создать динамический массив, и в цикле расширять его размер, опять вопрос - как?

Спасибо заранее.
Храни строки в списке, а не в массиве. Например, принимаешь по 1024 символа.

Собственно список - это и есть какое-то подобие динамического массива.

Тогда кодишь так:
Код:
struct info
{
  info * next; // Указатель на след. элемент
  info * prev; // и на предыдущий
  char data[1024];
} node;

...

recv(s, node.data, 1024, 0);

/*
 В классе хранишь указатели на первую принятую строку. Далее раотаешь с объектом.
*/

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

  #3  
Старый 17.06.2010, 13:08
d_x
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами: 9541766

Репутация: 2407


По умолчанию

Код:
string answer;

while( (iResult = recv(s, response, 1024, 0)) > 0)
  answer.append(response, iResult);

//весь ответ в answer.c_str()
Если нуллбайты будут в ответе, то такой способ скорее всего не подойдет.

Последний раз редактировалось d_x; 17.06.2010 в 13:11..
 
Ответить с цитированием

  #4  
Старый 17.06.2010, 13:33
POS_troi
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами: 10233548

Репутация: 1118


По умолчанию

Посоветуйте какую нить приблуду для парсинга XML и ini. Желательно чтобы обвертки поменьше катать нужно было.
 
Ответить с цитированием

  #5  
Старый 21.04.2026, 07:37
cloudpeople
Познающий
Регистрация: 12.04.2026
Сообщений: 94
С нами: 48988

Репутация: 10
По умолчанию

Посоветуйте как на чистом curl сделать авторизацию на vk.com плюс, это с ubuntu и чтобы авторизация происходила по qr-коду?
 
Ответить с цитированием

cgi скрипт на С
  #6  
Старый 06.07.2007, 00:16
big_BRAT
Познающий
Регистрация: 24.12.2006
Сообщений: 90
С нами: 10200612

Репутация: 168
По умолчанию cgi скрипт на С

Возможно вопрос не по адрессу, но всё же. Имеется cgi скрипт написан на С, скрипт принимает разные параметры через get (скрипт работает на apache 1.33 freebsd 6.2 /может играет роль/)
так вот у меня вопрос, возможно или переполнить бувер в таком скпирте, ведь как я понимаю то это таже откомпилированная "программа", и как я успел прочитать "Скрипт на языке C ничем не отличается от обычной C-программы. Собственно, это набор процедур, среди которых есть главная процедура. Этой главной процедуре передается управление при загрузке программы в оперативную память.", на основании сего я и сделал свой вывод. Если ответ положительный то возможно датите ссылки где про это можно почитать, зарание спасибо))
 
Ответить с цитированием

  #7  
Старый 06.07.2007, 01:20
sni4ok
Участник форума
Регистрация: 04.11.2006
Сообщений: 150
С нами: 10271420

Репутация: 175
По умолчанию

Цитата:
Сообщение от big_BRAT  
так вот у меня вопрос, возможно или переполнить бувер в таком скпирте
может ты исходник скрипта для начала приведёшь?
 
Ответить с цитированием

  #8  
Старый 06.07.2007, 14:15
big_BRAT
Познающий
Регистрация: 24.12.2006
Сообщений: 90
С нами: 10200612

Репутация: 168
По умолчанию

кому интересно посмотреть выложил файл /по поводу cgi on c/
http://files-upload.com/352662/file.tar.gz.html
 
Ответить с цитированием

  #9  
Старый 26.12.2007, 01:42
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами: 10582516

Репутация: 114
По умолчанию

Народ помогите разобраться с этим кодом уже 2 часа с ним парюсь. (всякая ненужная фигня вырезанна)
Код:
int main(int argc, char* argv[])
{	
	
	char com[80];
	while(1)
	{
		cout<<"# ";
		gets(com);
		int iret=command(com);
		if (iret==2) break;
	cout<<"\n\n";
	}
	return 0;
}

int command(char *s)
{
char * pch;
	 pch = strtok (s," ");
  while (pch != NULL)
  {
  	if(!strcmp("-add",pch))
		{
		pch = strtok (NULL, " ");
		if (pch)
		{
		if (!strcmp("s",pch)) 
		{
			pch = strtok (NULL, " ");
			add_stud(pch);
			break;
		}
		}
		cout<<"To get help about command put -help add";
		return 1;
		}
	if(!strcmp("-exit",pch) || !strcmp("-quit",pch))
		{
		cout<<"Good Buy\n";
		return 2;
		}
	  pch = strtok (NULL, " ");
  }
  cout<<"Command is not supported! Put -help to get Help";
return 0;
}

int add_stud(char *n)
{
char t[80];
		int i5Valu[5];
	cout<<"EnterFIO\n";
	cin>>t;
	cout<<"Enter 5 Values\n";
	return 1;
}
дело в том что если мы вводим
Код:
-add s 1
Вместо 1 может быть что угодно суть не в этом.
То на экране появляется запрос на ввод FIO
НО когда мы вводим фио и нажимаем ентер то у нас появляются 2 лишние строки с сообщением
Код:
Command is not supported! Put -help to get Help
Откуда????? они там берутся не как немогу догнать.

Вот что выводиться на экран.

Код:
# -add s 1
EnterFIO
asdsad
Enter 5 Values
Command is not supported! Put -help to get Help

# Command is not supported! Put -help to get Help

#
 
Ответить с цитированием

  #10  
Старый 12.01.2008, 00:45
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
С нами: 10378404

Репутация: 1095


По умолчанию

>> Не хочу спорить, возможно я и не прав... Ну мне лично так кажется...

а я и не собирался ни о чем спорить.. вопрос был поствлен такой: "чем отличается Vc++ и C++?"
ты ответил что это "идентичные понятия", но VC++ "используется для разработки визуальных интерфейсов".. я же написал в чем заключается разница между этими понятиями.. нету такого языка как VC++ или такой среды разработки как С++ - надо различать язык программирования от средств разработки приложений на данном языке..

>> Она потому и называется Visual C++, потомучто заточена на клепание приложение с интерфейсами...

не совсем так.. "Визуальная" она потому, что предоставляет разработчику набор удобных инструментов c визуальным интерфейсом для того чтобы упростить процесс создания приложений..

>> Всё же - она называется Microsoft Visual C++ если на то пошло...

ну, я полагаю, все и так поняли что именно о MSVC++ идет речь..

>> Среда разработки называется Microsoft Visual Studio...

MSVS - это интегрированная среда разрботки, включающая инструменты для разработки приложений на нескольких языках, в которую может быть включена и MSVC++.. у меня, например, стоит просто MSVC++ EE..

>> А Visual C++ потому что есть ***ня вроде MFC...

кстати говоря, в имеющейся у меня в наличии MSVC++ Express Edition этого самого MFC и нету..

>> P.S. Есть например Visual Prolog, он же от этого не стал средой в Visual Studio...

незнаю, что там с Visual Prolog'ом.. это, наверно, и язык и среда программирования, типа как VisualBasic.. но VC++ - это именно среда, а не язык..

>> Короче, кто как хочет - так и трактует Это моё ИМХО

)

Последний раз редактировалось Digimortal; 12.01.2008 в 00:53..
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 50 (пользователей: 0 , гостей: 50)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.