русский
Germany.ruForen → Архив Досок→ Programmierung

как победить sprintf ?

08.06.17 11:12
Re: как победить sprintf ?
 
Murr_0002 постоялец
Murr_0002
in Antwort anly 08.06.17 07:16

Ляжет то что было подставлено в аргументе.

-----

Разумеется - именно то, что, по факту, прописано в параметрах.

Ожидаемое, однако, есть указатель на начало нуль-терминальной строки в сегменте данных.


в стеке лежат какието числа, которые могут быть чем угодно

-----

Ээээ... там лежат "числа", которые ты можешь интерпретировать как тебе нужно. Для спецификатора

'%s'

ты должен ожидать "указатель-на-строку" (в сегменте данных).

Если данные не соответствуют ожидаемым, т.е. имеется "указатель-в-другой-сегмент", то с его можно

интерпретировать как

void*

и кастить к нужному типу. Ну или смотреть что по факту компилятор туда складывает.

То. что у тебя может быть набор параметров никак не соответствующий заданному формату - это понятно, но в Сях с эллипсисом оно таково изначально и не решаемо средствами Сей.

Рекомендация относится к случаю когда параметр на месте, но не соответствует нужному типу - отследить и пофиксить в ран-тайме.



или телом любого объекта любого типа

-----

Тебе сложно скастить к ссылке на объект с инициированием адресом в стеке? безум

 

Sprung zu