использование scanf со структурой, переданной по ссылке

Я передаю информацию о структуре функции, и в этой функции я использую scanf() для присвоения входных значений внутренним переменным структуры. Внутренняя переменная — это unsigned int.

Когда я использую: scanf("%u",s->member) или scanf("%u",(*s).member), я получаю предупреждение:

windows.c:62:36: предупреждение: формат указывает тип «unsigned int *», но аргумент имеет тип «unsigned int» [-Wformat]

И ошибка seg, когда я бегу.

Если я использую s.member или (&s).member, я получаю ошибку компилятора.

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

Я знаю, что, по-видимому, есть проблемы со scanf(), поэтому некоторые люди говорят, что нужно использовать fgets(), это проблема scanf()?


person Community    schedule 31.01.2020    source источник
comment
Помните, что в C нет передачи по ссылке, это все передача по значению. Чтобы имитировать передачу по ссылке, вы просто передаете адрес объекта по значению в качестве параметра.   -  person David C. Rankin    schedule 31.01.2020


Ответы (1)


Решено, мне нужно использовать

scanf("%u", &s->member);
person Community    schedule 31.01.2020
comment
Конечно, вы всегда должны использовать & с аргументами scanf (кроме строк). Это не имеет ничего общего с тем, как была передана структура. - person Barmar; 31.01.2020