Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Объясните плз, почему strchr вызывает ошибку на указанной строке, если запрашиваемый символ в строке имеется ? [>] Если же закрыть строку после 'E' символом '\0' то всё ок.
Отправлено
MegaJohn
01 октября 2009, г. 10:21
Составить ответ
|
Вернуться на конференцию.
Ответы
Ответ: какую ощибку?
-
Dmitriy
(01.10.2009, 17:10:23
38.99.178.30
, 152 байт)
а что обычно передается первым параметром в strchr ?
-
MegaJohn
(01.10.2009, 17:17:51
81.222.85.88
,
пустое
)
Ответ: обычно ошибок не бывает
-
Dmitriy
(01.10.2009, 20:34:27
38.99.178.30
, 53 байт)
Возможно одна из этих 'E' - русская. Или стоит пройти с отладчиком по телу функции.
-
vmp
(01.10.2009, 10:29:15
10.0.1.100,87.245.155.198
,
пустое
)
пройти отладчиком - это я асм x86 нада знать. Вообщем, принудительно затерминалил - работает, хотя мне и не понятно
-
MegaJohn
(01.10.2009, 10:43:1
81.222.85.88
,
пустое
)
Иногда оптимизатор компилятора лажается с указателями, когда оба указателя адресуют одну и ту же переменную.
-
vmp
(01.10.2009, 10:58:53
10.0.1.100,87.245.155.198
, 191 байт)
скорее всего ваша правда: коментирую первый strchr и второй уже не вызывает ошибки. Правда в моей софте по этим указателям нет записи - только иннициализация и чтение.
-
MegaJohn
(01.10.2009, 11:36:53
81.222.85.88
,
пустое
)
Не знаю как для x86, но в IAR ARM такая ситуация рассматривается в разделе "Type-based alias analysis".
-
vmp
(01.10.2009, 11:54:27
10.0.1.100,87.245.155.198
,
пустое
)
не, они одинаковы. Проверял. Да и если принудительно затерминалить строку то второе использование функции проходит успешно.
-
MegaJohn
(01.10.2009, 10:33:22
81.222.85.88
,
пустое
)
Почитайте доку на strchr. Очевидно она работаетс асо стороками ASCIIZ, а не ASCII.
-
misyachniy
(01.10.2009, 10:24:42
194.187.111.110
,
пустое
,
ссылка
,
картинка
)
и если Z и ищет с начала, то почему пропускает 'E' ?
-
MegaJohn
(01.10.2009, 10:36:11
81.222.85.88
,
пустое
)
Вы же динамически создаете строчку. В одном случае 0(NULL) попадается вовремя в другом вылетает
-
misyachniy
(01.10.2009, 10:55:54
194.187.111.110
,
пустое
,
ссылка
)
причем здесь ноль, если это признак конца поиска ? Я поверю что указатель выходит за выделенную динамичесмкую область и GodeGuard даст предупреждение. Тады почему на 'E' нет проекращения работы функции ?
-
MegaJohn
(01.10.2009, 11:00:27
81.222.85.88
,
пустое
)
что же тогда строкой выше та же функция и та же строка не вызывают ошибки ? Ведь ищется с начала а не сконца
-
MegaJohn
(01.10.2009, 10:31:36
81.222.85.88
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 567:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru