Как я могу прочитать значения в структуру, используя указатели? - PullRequest
5 голосов
/ 01 октября 2010

Я знаю, когда мне нужно печатать, я использую p->real и т. Д., Но что мне следует писать, когда я читаю цифры, используя scanf?

#include <stdio.h>

typedef struct {
    int real;
    int imaginary;
} complex;

void read(complex*);

void main() {
    complex c;
    read(&c);
}    

void read(complex* p){
    /*what to write in scanf*/
}

Ответы [ 3 ]

12 голосов
/ 01 октября 2010

Вы можете написать:

scanf("%d %d", &p->real, &p->imaginary);

, но это сильно зависит от формата, в котором приходят цифры.

4 голосов
/ 01 октября 2010

scanf требует, чтобы вы передали адрес пространства памяти, в котором вы хотите сохранить результат, в отличие от printf, для которого требуется только значение (это не должно волновать где значение находится).Чтобы получить адрес переменной в C, вы используете оператор &:

int a;
scanf("%d", &a);

Значение: прочитать целое число в указанный мной адрес, в данном случае адрес a.То же самое касается членов структуры, независимо от того, находится ли сама структура в стеке или в куче, доступ к которой осуществляется по указателю и т. Д .:1014 * плюс смещение члена в структуре.

0 голосов
/ 24 сентября 2012

Используйте следующий код:

scanf("%d",&pointer->variable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...