Ошибка отладочного утверждения, result_pointer! = Nullptr - PullRequest
0 голосов
/ 12 марта 2020

Я пишу эту программу на C, которая захватывает контактную информацию. Я передаю указатель struct в struct функции, которая получает информацию об адресе, но при сканировании информации в местоположение указателя я получаю ошибку отладки.

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

И нет, я не использовал & в предыдущей функции для scanf.

Вот мой код

void getAddress(struct Address* address)
{
    //Street Number
    do  //validate the street number
    {
        printf("Please enter the contact’s street number: ");
        scanf("%d", address->streetNumber); //<----where the error is
    } while (address->streetNumber <= 0);

    clearIS();    //clears input stream

1 Ответ

1 голос
/ 12 марта 2020

Короче говоря, вы должны добавить &(address->streetName), и все получится.

Основная причина такого поведения состоит в том, что scanf ожидает, что вы передадите ему указатель на место в памяти, куда оно должно записать

В вашем текущем коде вы говорите scanf, чтобы записать 32 бита пользовательской информации в память, которая начинается с адреса с address->streetName, и это не то, что вы хотите сделать.

То же самое с address->streetName работает нормально, потому что, я думаю, вы передаете указатель на массив символов в scanf. Потому что address->streetName определен в вашей структуре с типом char* или char[N].

...