реклама на сайте
подробности

 
 
> Странная работа оператора strtol, avr gcc
Skaf
сообщение Oct 22 2010, 17:06
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 228
Регистрация: 4-06-09
Пользователь №: 49 940



Всем привет. Пишу подпрограмму для конвертирования строки типа "00:1c:4f:a2:23:12" в 6 байт.

Использую функцию strtol

Код
unsigned long strtoul (const char * __nptr,  char ** __endptr,  int __base)


Судя по описанию __nptr указатель на строку, __endptr указатель на следующий символ после которого в строке не надо делать обработку, __base - система счисления строки

Долго боролся с глюками, в итоге соорудил маленький код в котором проявляется странное на мой взгляд поведение функции strtol. Объясните, пожалуйста, почему она модифицирует саму строку?

Строка- mac. Запись идет в data. Почему в mac изменяются 2 байта, а именно тот, на который указывает __endptr и следующий за ним? (код в картинке. Там же красным помечены изменившиеся байты из-за действий функции strtol)

PS- Последние 2 строки кода бессмыслены и существуют только для того, чтобы там поставить точку останова.

Сообщение отредактировал Skaf - Oct 22 2010, 17:07
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01344 секунд с 7
ELECTRONIX ©2004-2016