WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Всбесившийся буфер

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Всбесившийся буфер
MasyA опубликован 13-01-2002 20:50 MSK   Click Here to See the Profile for MasyA   Click Here to Email MasyA  
Люди добрые,помогите решить проблемку:
Объявляю в классе вид:

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     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Блин, не смеши мои коленки!

Когда определяешь массив, в квадратных скобках должно указываться количество элементов массива, а не индекс последнего элемента!

char buf[2];

rivitna опубликован 13-01-2002 21:03 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
А "ХА-ХА" (HH) - это защита от лохов режиме отладки, тебе повезло, что она есть! :)
MasyA опубликован 13-01-2002 21:08 MSK     Click Here to See the Profile for MasyA  Click Here to Email MasyA     
Я понимаю,но тут дело даже не в этом.
Объявляю буфер на 2 элемента,а он
умудряется засунуть в себя как минимум 4.
Я никак не пойму. Х..ня какая-то.
rivitna опубликован 13-01-2002 21:14 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Все дело в том, что
char buf[1] - есть строка, состоящая из одного символа и заканчивающаяся 0.
Когда ты вводишь
buf[1]='o',
то ты затираешь этот нуль.
А VC считает, что buf - строка, поэтому он тебе показывает до следующего нуля.

Теперь ты удовлетворен? :)

MasyA опубликован 13-01-2002 21:16 MSK     Click Here to See the Profile for MasyA  Click Here to Email MasyA     
ПАСИБОЧКИ! Я понял.
В release-версии все нормально.
пасибо!
DEiL опубликован 13-01-2002 21:17 MSK     Click Here to See the Profile for DEiL  Click Here to Email DEiL     
не ссы. это ВЦ прикалывается. там 2 элемента.
хотя можешь извратнуться и сделать так:
char buf[3];
buf[0] = "y";
buf[1] = "0";
buf[2] = 0;
:)
DEiL опубликован 13-01-2002 22:34 MSK     Click Here to See the Profile for DEiL  Click Here to Email DEiL     
мля, опередили :)
rivitna опубликован 13-01-2002 22:57 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
Диалектика жизни! :)
migel опубликован 14-01-2002 21:58 MSK     Click Here to See the Profile for migel  Click Here to Email migel     
>>>>Все дело в том, что
>>>>char buf[1] - есть строка, состоящая из
>>>одного символа и заканчивающаяся 0.

Хрена Там строка char buf[1] = это есть массив состоящий из одного элемента размеров в 1 байт.
никаких нулевых байтов не добавляется
поэтому любой индекс > 0 при доступе к массиву приведет к ошибке выхода из диапазона.

Учите матчасть.

DEiL опубликован 14-01-2002 22:12 MSK     Click Here to See the Profile for DEiL  Click Here to Email DEiL     
да это уже не суть важно, в наше глубоко-идеализированное время...
2rivitna - блина, я такой умный пост хотел в топик для 2purpe замутить, но не успел - он, гад, снёс всё. и где тут справедливость?
как же он так взял и смог удалить чужие мысли? (с) lamo
он в первую очередь должен был посоветоваться с нами, поставить бутыль и обсудить всё -) purpe - ах ты наш реформатор фигов :)
если бы не наши умные посты, форум про Ц++ не был бы таким посещаемым и был бы очень сухим и скучным. :(

зы предлагаю водку окрестить C+, ибо водка есть частично спирт, спирт есть органическое соединение, основа которого C, к которому прибавили (+) радикал :)

вывод: вот и нашли связь между программизмом и выпивкой. 8)

gonzales опубликован 14-01-2002 22:58 MSK     Click Here to See the Profile for gonzales  Click Here to Email gonzales     
Может напишешь этот умный пост? Хотелось бы увидеть:))Я вот подумал теперь таким способом можно убивать ненравящиеся тебе топики. Вот к примеру идёт топик "Особенности использования функции
initgraph в операционной системе Windows".
Ты туда заваливаешься и начинаешь базар на
тему голых мужиков и пива. Увидев это purpe
хочет дизэйблнуть юзера который такую лажу распустил. Смотрит , а там дохрена народа.
Делать нечего , надо всё это дело отмодерировать. И всё ,минус топик.
ps Извините ,что не в тему. :))
rivitna опубликован 14-01-2002 23:36 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
2 DEiL:
Вот мы и в опале. Следующий этап - последний вагон на север, Саяно-Шушенское, чистый спирт за неимением водки и пива, и никаких тебе кампутеров.
Но нас, карбонариев голыми руками не возьмешь! :)))
Если Пурпе понял бы, что есть большая польза от наших дискуссий, ибо на фоне их любой идиотский топик выглядит совсем не глупым, и опять наводит на грустные мысли, на астрал...
Что есть С++, это С + спиртное (по Ленину). То бишь мы не отклоняемся от темы, как это может показаться на первый взгляд.
Просто мы так видим мир, не надо затыкать рот! Давайте дискутировать, спорить, давайте стремиться к консенсусу!

Да хотелось бы сказать одному ученому кренделю с испанским именем, по-моему Хуан...
(Долго Хуан объяснял жестами русским туристам, как его зовут!) :)))
А, пардон, Мигель (я уточнил), ты прав, а я не прав. Сморозил-с не подумавши. Буду учить мат-часть по lamo )))

rivitna опубликован 14-01-2002 23:40 MSK     Click Here to See the Profile for rivitna  Click Here to Email rivitna     
2 gonzales:
Вечно ты катком по лирике!
Художника обидеть может каждый!

Читали мы Вашу пьеску, в четырех частях (одну цензура не пропустила). Так это плод твоих мечтаний? Или ты планируешь более масштабное произведение?

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.