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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2012, 18:01   #11
kleric
Пользователь
 
Регистрация: 27.07.2009
Сообщений: 22
По умолчанию

упрощу вопрос
Код:
    strcpy( (char*)&fr.id, "123" );
    strcpy( (char*)&fr.size, "456" );

    cout << fr.id << endl;
    cout << fr.size << endl;
почему выводит:

123456
456


хотя должен:

123
456

и как это исправить?
kleric вне форума Ответить с цитированием
Старый 02.06.2012, 18:21   #12
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

если под id и size у вас так и осталось отведено по 3 байта, то \0, который записывается после id первой strcpy(), тут же успешно затирается вторым вызовом strcpy(), т.к. 4-тый байт поля id приходится на 1-ый байт поля size, куда записывается символ '4'. strcpy() не проверяет, сколько реально памяти у вас отведено под строку. Фактически, вы ещё портите какие-то другие данные, которые расположены после size, т.к. вместо отведенных 3 байт, strcpy() спокойно заполняет 4.

Отведите под id и size по 4 байта, и будет всё ОК.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fread GriFFoN PHP 1 22.10.2011 22:55
Использование fread без блокирующего режима TRIZER PHP 4 20.06.2011 14:02
Чтение из файла virtuhay266 Помощь студентам 0 27.11.2010 23:27
бинарное чтение файла.. Gerry Помощь студентам 3 03.11.2009 11:59
Чтение из файла Need_Help Паскаль, Turbo Pascal, PascalABC.NET 5 19.05.2007 05:37