|
|
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Что-то никак не раздуплюсь.... Есть тип данных int. Он занимает sizeof(int) байт. (У меня 4). Есть у меня строка "teststring" - 10 байт. А еще у меня есть char buf[1000] который должен содержать sizeof(int) байт - длина сообщения, остальное - само сообщение. Не могу никак понять каким образом это соорудить? трудность составляет запись числа 10 в первые четыре байта буфера, и последующее их извлечение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 13:33 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Ну а если так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 13:54 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
наверно так: сначало число: int nNumber = 10; memcpy(buf,&nNumber,sizeof(int)); а потом строку: char[] cString = "teststring"; memcpy(buf+sizeof(int),cString,sizeof(cString)); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:08 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
дед МакарЧто-то никак не раздуплюсь.... Есть тип данных int. Он занимает sizeof(int) байт. (У меня 4). Есть у меня строка "teststring" - 10 байт. А еще у меня есть char buf[1000] который должен содержать sizeof(int) байт - длина сообщения, остальное - само сообщение. Не могу никак понять каким образом это соорудить? трудность составляет запись числа 10 в первые четыре байта буфера, и последующее их извлечение. Такая вещь, как правило, реализуется через структуру: Код: plaintext 1. 2. 3. 4. Если же нужно именно так, как Вы описали, то есть такое решение: - число int считывать как массив char (естественно, что конечного элемента в этом массиве не будет, поэтому надо самому озаботиться контролем выхода за границы). - скопировать 4 символа в Вашу итоговую строку. - скопировать в итоговую строку текст Например, возможна такая реализация (запись): Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:08 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Ой Вэйнаверно так: сначало число: int nNumber = 10; memcpy(buf,&nNumber,sizeof(int)); а потом строку: char[] cString = "teststring"; memcpy(buf+sizeof(int),cString,sizeof(cString)); Так, наверное, лучше.... Что-то я про memcpy совсем забыл... Зациклился на строках... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:10 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
2 Станислав С Вариант со структурой, конечно, гораздо понятнее и удобнее. Незачем смешивать данные разных типов и потом самому же от этого страдать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:16 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
И в таких случаях, лучше не забывать ставить на всякий случай директивы "упакованных" структур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:24 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:27 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Ой Вэй2 Станислав С Незачем смешивать данные разных типов и потом самому же от этого страдать. Я так понимаю, что в целях исключительно самообразования, дедМакар пытается эмулировать Паскалевские строки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:28 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
AkhИ в таких случаях, лучше не забывать ставить на всякий случай директивы "упакованных" структур.если первый инт, то не обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:30 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Станислав С Я так понимаю, что в целях исключительно самообразования, дедМакар пытается эмулировать Паскалевские строки... к сожалению (наверное) я не знаю что такое паскалевские строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:43 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
щас научите ребенка паковать структуры в буффер, а он их по сетке таскать начнет, и все у него будет хорошо, пока не придет он комп с неинтеловской архитектурой да еще вдобавок 64 разрядный, во намается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:57 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
дед Макар Станислав С Я так понимаю, что в целях исключительно самообразования, дедМакар пытается эмулировать Паскалевские строки... к сожалению (наверное) я не знаю что такое паскалевские строки Имелась в виду концепция, принятая в типе string языка программирования Паскаль и его "деток" (Object Pascal, Делфи): сначала в string идет длина строки (число), затем - "полезные данные" (буковки, составляющие строку). Функции, работающие с такой строкой, используют значение длины строки для контроля выхода за границы строки (=массива символов). Пользователь же при просмотре всегда видит только "полезные данные" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 15:04 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
да, именно memcpy мне и не хватало. Сделал как написал Ой Вэй. Все получилось. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 15:23 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Мда. 10 ответов на очевидный вопрос. Тут что, на любую чушь позми писать будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 15:37 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Den_diМда. 10 ответов на очевидный вопрос. Тут что, на любую чушь позми писать будут? Бывает и круче. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 15:40 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Лучше всего структуру написать соответствующую... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 19:50 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
MasterZivЛучше всего структуру написать соответствующую... Ещё один... Баваите тогда класс напишем, перегрузим всё что можно и будет нам счастье. Тогда строги можно и делить будет, и инвертировать и числу присваивать и вообще всё что угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 21:55 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
Den_di я же говорил, что сабж - местный юмор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2006, 12:12 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
не знаю как насчет юмора - но не до смеха. использую сокеты. Есть функция у них - int recv( SOCKET s, char* buf, int len, int flags ); В качестве буфера используется char* (из-за чего все и началось). А если мне в качестве буфера надо передать структуру? или экземпляр класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 15:18 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
дед Макарне знаю как насчет юмора - но не до смеха. использую сокеты. .. В качестве буфера используется char* (из-за чего все и началось). А если мне в качестве буфера надо передать структуру? или экземпляр класса? Ну и напишешь когда дело дойдет для struct St{} st; recv(s,&st,sizeof(st),..); При этом достаточно обеспечить на обоих концах однозначное понимание struct (т.е. выравнивание, порядок байт..). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 15:55 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
делов-то Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 15:57 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
ага, понятно. Смущала меня конструкция (char*)&mystruct но все таки видимо так и надо :) Все хорошо, но вот еще вопрос. У меня структура типа Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 16:23 |
|
||
|
Теперь учусь работать со строками...
|
|||
|---|---|---|---|
|
#18+
char - это указатель, а если его заменить на массив char[x]? -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 16:28 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34119622&tid=2030053]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 480ms |

| 0 / 0 |
