![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
1>.\123.cpp(105) : warning C4996: 'sprintf' was declared deprecated 1> D:\Program Files\Microsoft Visual Studio 8\VC\include\stdio.h(345) : see declaration of 'sprintf' 1> Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.' 1>.\123.cpp(108) : error C2065: 'Lc' : undeclared identifier |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
и в чем вопрос собственно?
|
|||
|
||||
belphegor |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.12.2006 Где: Молдова, Кишинев Репутация: нет Всего: нет |
вместо sprintf напиши itoa(i,buff,10)
|
|||
|
||||
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Можно поинтересоваться какой параметр за что отвечает? и по какой причине sprintf не работает
Это сообщение отредактировал(а) ZufuS - 18.3.2007, 23:00 |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
непоможет. Там тактика неправильная. Под буфер память не выделена Добавлено @ 23:12 вообще ошибка компиллятора не об этом коде если смотреть по номерам строк. Компиллятор просто предупреждает про sprintf, но ошибкой это не считает |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
sprintf нынче считается Unsafe, т.к. вообще никак не проверяет размеров переданного буфера. Но при правильном использовании все прекрасно работает.
Есть вариант sprintf (вроде бы snprintf), куда передается размер буфера, за пределы которого она не выйдет. Метод Fazil6 намного медленнее. Добавлено @ 13:59 Но память действительно выделять ты должен сам. -------------------- ... |
|||
|
||||
ZufuS |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Было бы хорошо, если б кто-нибудь объяснил в крации что делает буфер и что за память я должен выделять.
На этот раз при наличии
при запуске приложения появляется ошибка. Сейчас я не уверен, так же ли я писал в прошлый раз, может я использовал массив. Почему тогда из-за этих двух строчек этой ошибки не возникало. И почему в случае когда *c == "abc"
работает нормально, а
не работает. |
||||||
|
|||||||
Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
Это сообщение отредактировал(а) Tectoder - 20.3.2007, 00:02 |
|||
|
||||
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Tectoder, та же ошибка.
|
|||
|
||||
Fazil6 |
|
||||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
у него неправильный код. Не так надо. во первых не
а
а во вторых это еще и после использования надо удалять
во вторых размер ты должен выделять гарантировано больший на 1 чем число знаков числа, которое ты собираешься конвертировать, иначе получишь запись в чужие адреса (то что ты имеешь, когда вообще не выделяешь)
возможно сработает так
|
||||||||||
|
|||||||||||
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
||||
|
||||
seacat79 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: нет Всего: 1 |
||||
|
||||
ZufuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 237 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Теперь заработало, спасибо. Хотелось бы спросить по поводу Unicode, от чего зависит необходимость писать _T()?
|
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: нет Всего: 60 |
вобщем чего-то подобного следовало ожидать... что ты сделать хочешь? Покажи больше кода Добавлено @ 17:24 это макрос, для представления ASCII в Юникоде "превед" - ASCII _T("превед") тоже __T("превед") тоже _TEXT("превед") тоже L"превед" - Unicode |
|||
|
||||
Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
_T!=L
значение макроса _T(и _TEXT) зависит от директивы UNICODE. Если она установлена, _T равно L, если не установлена, то _T ничего не делает. Это нужно для придания программе универсальности. Если в программе везде исользуется макрос _T, а не оператор L, то для того что бы сменить всю кодировку программы, достаточно изменить в ней одну строчку, определяющую символ UNICODE Это сообщение отредактировал(а) Tectoder - 20.3.2007, 17:39 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |