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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 15:53   #1
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
Восклицание Не воспринимаются символы конца строки

Решил перенести клиентскую программу на C++ Builder 2007. Сервер написан на g++ version 2.95. И столкнулся с такой проблемой
на сервере клиенту отправляется список online пользователей
функция:
Код:
typedef map <string ,SOCKET > LIST_USERS ;//====список клиентов===

void UPL_LIST(LIST_USERS lists,SOCKET client){
	 LIST_USERS::iterator i;
	 string str_ls; 
	
	   

	for(i=lists.begin();i!=lists.end() ;i++){
         
		   str_ls=str_ls.append((*i).first);
		   str_ls=str_ls.append("\n");
		   
		}	
		

      
                          int size=str_ls.length();
                          char users_size[10];
                          ltoa(size,users_size,10);//=========передача размера списка
  
                          send(client,users_size,10,0);//=========передача списка==========
   
                           send(client,str_ls.c_str(),size,0);
   

}
функция принимающая список на клиентской стороне:
Код:
int PrintList(SOCKET client){

	  char *size;
	  size=(char *)malloc(10);
	  recv(client,size,10,0);

	  int size_list=atol(size);

	  if(size_list<=0 ){

		 Form1->Memo4->Text="No online users";
		 free(size);
		 return 0;
	  }
	  else{
		 char *buf;
		 buf=(char *)malloc(size_list);

		 recv(client,buf,size_list,0);   //======list of users====

		 string list(buf);
		 Form1->Memo4->Clear();

		 Form1->Memo4->Lines->Add(list.c_str());
		 Form1->Memo4->Lines->Add("\n");
		 free(buf);
		 free(size);
		 return 1;
	  }





}
на клиенте список принимается, но символ переноса строки приложение не воспринимает и лепит все в одну строчку. Подскажите пожалуйста как с этим бороться?
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 18.05.2010, 16:15   #2
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Ошибка здесь
Код:
		string list(buf); //здесь содержится весь список
		//...
		 
                               Form1->Memo4->Lines->Add(list.c_str()); //эту часть надо делать в цикле
		Form1->Memo4->Lines->Add("\n");//это вообще лишнее
В общем, Form1->Memo4->Lines->Add только таким образом можно добавить строку, и то только одну...поэтому вытягивай из list по одному пользователю и добавляй
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
ввод до конца строки. ssi Помощь студентам 0 27.01.2010 09:47
Количество пробелов до конца строки Qv_1 Microsoft Office Word 8 01.06.2009 19:58
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Потоки и символ конца строки Deatz Общие вопросы C/C++ 3 07.05.2008 20:02