| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Помогите разбить строку |
| Автор: Sollo 10.2.2006, 17:55 | ||
У меня есть такая проблема ... я читаю из сокета в буфер после чего мне нужно по двое точию разбить содержимое буфера в две переменные. и вывести их на екран ..... и у меня ничего не получаеться или я просто не умею пользоваться printf . содержимое буфера следуйщее: www.mine.ru:bplace1
Подскажите плизз очень надо ... у меня уже голова просто болит второй день не одной путной функции для вывода подобрать не могу. потому что до етого всё время в Винде по Винду писал там ето ращз плюнуть.... а тут сума схожу !! =( Хелп |
| Автор: Бонифаций 10.2.2006, 18:03 |
| выведи с помощью puts если сомневаешься в printf. а еще лучше проследи в дебагере. PS. посмотри strtok для разделения строки |
| Автор: SergeanTSID 10.2.2006, 22:03 | ||
| Абру кадабру выводит потому что нет завершающего строку нуля. Попробуй такой вариант.
|
| Автор: Бонифаций 11.2.2006, 12:16 | ||||
на самом деле вариантов много. Например
или
|
| Автор: bilbobagginz 12.2.2006, 01:18 |
| функция strtok заманчива, но уж очь чревата последствиями: человек через сокет получает. a strtok() известен своей любовью помогать черношапым крепышам. думаю стоит на самом деле запустить gdb... и посмотреть что же там приходит. скорее всего окажется, что приходит либо UNICODE либо не перевели в сетевой поорядок буффер перед отсылкой, и после получeния ( htons(), ntohs() и т.д. ) |
| Автор: Sollo 13.2.2006, 09:57 | ||
на самом деле я решил ету проблему с помощью strcpy но теперь появилась друга проблема .... =(((((
мне нужно можно так сказать путь создать соединив ето всё .... в C++ Builder всё просто создал переменную AnsiString и клей в неё что хочешь а под Юнихом немогу понять как мне ето сделать ! Ребята хелп кто знает что у меня не так ! |
| Автор: bilbobagginz 13.2.2006, 15:35 |
| извини, но дебажить это программу видимо придется тебе. в gdb, на клиенте: поставь брейк-пойнт после получения (rcv(), или read()) break <номер строки> запусти прогу: run и жди на сервере, поставь брейк-пойнт до отсылки (send(), или write()) запускай, посмотри что сидит в буффере на винде. потом запусти продолжение. и иди на клиент. там тебя ждет твой буффер после прогулки по сети. |
| Автор: Sollo 13.2.2006, 15:55 |
| Спасибо за совет. Я точно знаю что у меня в буфере .... но вопрос не в етом я по Линух никогда не писал и немогу понять каким образом мне соеденить две переменные типа char [20] в одну переменную типа char [50] |
| Автор: Adil' 13.2.2006, 17:35 | ||
"соединить две переменные в одну" не получится. Можно только скопировать содержимое одного массива в другой, и добавить содержимое третьего, для си-шных строк можно так:
|
| Автор: Sollo 13.2.2006, 17:50 |
| Хорошо а такой вопрос а можно как то проверить в какой кодировке символы находяться в буфере ? |
| Автор: threef 14.3.2006, 15:23 |
| Отправитель может проставлять кодировку. Иначе - пиши "интеллектуальную проверку", напиши словарик для разных кодовых таблиц и отыскивай соответствия или несоответствия. Не забудь о мультибайтовых кодировках. |