| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > проблема при отладке |
| Автор: aleknek 9.12.2007, 18:46 | ||
| Не могу нормально отладить программу! Вылетает сообщение: Debug assertion Failed Program: d:\проекты\указатель\debug\указатель.exe File: isctype.c Line: 68 Expression: (unsigned)(c+1)<=256 Смотрел файл isctype.c , не могу вычислить где ошибка ? Собственно сам код:
|
| Автор: JackYF 9.12.2007, 19:30 |
| На какой строке исходного кода? не проверяешь выход за слово. Возможно переполнение. |
| Автор: aleknek 9.12.2007, 20:56 | ||
Как организовать проверку выхода за слово ? |
| Автор: JackYF 9.12.2007, 21:02 |
узнать strlen'ом длину и поставить в while дополнительное условие на счётчик операций (или на разницу указателей) |
| Автор: zkv 10.12.2007, 09:09 |
| судя по всему вылетает на isalnum(), локаль надо советскую поставить |
| Автор: Random13 10.12.2007, 09:14 |
| Интересно, а _tmain вместо обычного мэйн - это в какой среде пишеться в борланде что-ли ? В борланде никогда не работал ? |
| Автор: zkv 10.12.2007, 09:27 |
это TCHAR версия, http://forum.vingrad.ru/faq/topic-173734.html |
| Автор: crazy_hand 15.12.2007, 19:24 | ||||
Для русской локали это выглядит примерно так:
смотри http://msdn2.microsoft.com/ru-ru/default.aspx. |
| Автор: aleknek 15.12.2007, 19:47 | ||
А это разве не русская локаль ?? |
| Автор: baldina 15.12.2007, 20:19 | ||||
| Тут две проблемы: 1. т.к. приложение консольное, должна использоваться локаль 866. Т.е. нужен setlocale(LC_CTYPE,".866"); Это для того что бы правильно отрабатывал isalnum для русских букв. 2. int isalnum(int) - на входе целое. Ошибка такая:
понятно, что все буковки с кодом больше 127 представляются ... как отрицательные! и (unsigned)(c+1) значительно больше 256. вывод - использовать unsigned char всместо char в коде либо выставить в свойствах компиляции Language->Default Char Unsigned->Yes Кстати там еще ошибка в коде - '\ 0', т.е. пробел между \ и 0 Добавлено через 1 минуту и 47 секунд JackYF, что касается циклов там все в порядке, так как завершающий '\0' однозначно не isalnum Добавлено через 12 минут и 21 секунду Вообще полезно использовать unsigned char, если предпологается хранить там строки с родным нам русским языком. Во избежание многих проблем. пример:
|
| Автор: aleknek 16.12.2007, 01:08 |
| Всем огромное спасибо, проблема решилась при подключении 866 локали и изменении свойств компиляции. |