Короче говоря, вы должны добавить &(address->streetName)
, и все получится.
Основная причина такого поведения состоит в том, что scanf
ожидает, что вы передадите ему указатель на место в памяти, куда оно должно записать
В вашем текущем коде вы говорите scanf
, чтобы записать 32 бита пользовательской информации в память, которая начинается с адреса с address->streetName
, и это не то, что вы хотите сделать.
То же самое с address->streetName
работает нормально, потому что, я думаю, вы передаете указатель на массив символов в scanf
. Потому что address->streetName
определен в вашей структуре с типом char*
или char[N]
.