Автор
|
Тема: Всбесившийся буфер
|
MasyA |
опубликован 13-01-2002 20:50 MSK
Люди добрые,помогите решить проблемку: Объявляю в классе вид: char buf[1]; Есть еще ф-ия Send: void CNetView::OnSend() { buf[0]='y'; buf[1]='o'; // Отправляю содержимое буфера send(Sock,buf,2,0); } НО, когда делаю отладку(debug), какого-то фига буфер содержит такое значение: 'yoHH' ,а не 'yo'. Подскажите пожалуйста,если кто знает.
|
rivitna
|
опубликован 13-01-2002 21:00 MSK
Блин, не смеши мои коленки!Когда определяешь массив, в квадратных скобках должно указываться количество элементов массива, а не индекс последнего элемента! char buf[2]; |
rivitna
|
опубликован 13-01-2002 21:03 MSK
А "ХА-ХА" (HH) - это защита от лохов режиме отладки, тебе повезло, что она есть! :) |
MasyA
|
опубликован 13-01-2002 21:08 MSK
Я понимаю,но тут дело даже не в этом. Объявляю буфер на 2 элемента,а он умудряется засунуть в себя как минимум 4. Я никак не пойму. Х..ня какая-то. |
rivitna
|
опубликован 13-01-2002 21:14 MSK
Все дело в том, что char buf[1] - есть строка, состоящая из одного символа и заканчивающаяся 0. Когда ты вводишь buf[1]='o', то ты затираешь этот нуль. А VC считает, что buf - строка, поэтому он тебе показывает до следующего нуля.Теперь ты удовлетворен? :) |
MasyA
|
опубликован 13-01-2002 21:16 MSK
ПАСИБОЧКИ! Я понял. В release-версии все нормально. пасибо! |
DEiL
|
опубликован 13-01-2002 21:17 MSK
не ссы. это ВЦ прикалывается. там 2 элемента. хотя можешь извратнуться и сделать так: char buf[3]; buf[0] = "y"; buf[1] = "0"; buf[2] = 0; :) |
DEiL
|
опубликован 13-01-2002 22:34 MSK
мля, опередили :) |
rivitna
|
опубликован 13-01-2002 22:57 MSK
Диалектика жизни! :) |
migel
|
опубликован 14-01-2002 21:58 MSK
>>>>Все дело в том, что >>>>char buf[1] - есть строка, состоящая из >>>одного символа и заканчивающаяся 0.Хрена Там строка char buf[1] = это есть массив состоящий из одного элемента размеров в 1 байт. никаких нулевых байтов не добавляется поэтому любой индекс > 0 при доступе к массиву приведет к ошибке выхода из диапазона. Учите матчасть. |
DEiL
|
опубликован 14-01-2002 22:12 MSK
да это уже не суть важно, в наше глубоко-идеализированное время... 2rivitna - блина, я такой умный пост хотел в топик для 2purpe замутить, но не успел - он, гад, снёс всё. и где тут справедливость? как же он так взял и смог удалить чужие мысли? (с) lamo он в первую очередь должен был посоветоваться с нами, поставить бутыль и обсудить всё -) purpe - ах ты наш реформатор фигов :) если бы не наши умные посты, форум про Ц++ не был бы таким посещаемым и был бы очень сухим и скучным. :(зы предлагаю водку окрестить C+, ибо водка есть частично спирт, спирт есть органическое соединение, основа которого C, к которому прибавили (+) радикал :) вывод: вот и нашли связь между программизмом и выпивкой. 8)
|
gonzales
|
опубликован 14-01-2002 22:58 MSK
Может напишешь этот умный пост? Хотелось бы увидеть:))Я вот подумал теперь таким способом можно убивать ненравящиеся тебе топики. Вот к примеру идёт топик "Особенности использования функции initgraph в операционной системе Windows". Ты туда заваливаешься и начинаешь базар на тему голых мужиков и пива. Увидев это purpe хочет дизэйблнуть юзера который такую лажу распустил. Смотрит , а там дохрена народа. Делать нечего , надо всё это дело отмодерировать. И всё ,минус топик. ps Извините ,что не в тему. :)) |
rivitna
|
опубликован 14-01-2002 23:36 MSK
2 DEiL: Вот мы и в опале. Следующий этап - последний вагон на север, Саяно-Шушенское, чистый спирт за неимением водки и пива, и никаких тебе кампутеров. Но нас, карбонариев голыми руками не возьмешь! :))) Если Пурпе понял бы, что есть большая польза от наших дискуссий, ибо на фоне их любой идиотский топик выглядит совсем не глупым, и опять наводит на грустные мысли, на астрал... Что есть С++, это С + спиртное (по Ленину). То бишь мы не отклоняемся от темы, как это может показаться на первый взгляд. Просто мы так видим мир, не надо затыкать рот! Давайте дискутировать, спорить, давайте стремиться к консенсусу!Да хотелось бы сказать одному ученому кренделю с испанским именем, по-моему Хуан... (Долго Хуан объяснял жестами русским туристам, как его зовут!) :))) А, пардон, Мигель (я уточнил), ты прав, а я не прав. Сморозил-с не подумавши. Буду учить мат-часть по lamo )))
|
rivitna
|
опубликован 14-01-2002 23:40 MSK
2 gonzales: Вечно ты катком по лирике! Художника обидеть может каждый!Читали мы Вашу пьеску, в четырех частях (одну цензура не пропустила). Так это плод твоих мечтаний? Или ты планируешь более масштабное произведение? |