Присвоение компоненту структуры, который взят в качестве указателя - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь взять числа из текстового файла для помещения компонента структуры.

typedef struct{
 int x;
}A;

try 1: (fp - указатель файла с режимом чтения)

void foo(A *a){
  fscanf(fp,"%d",&(*a).x);
 }

try 2:

void foo(A *a){
  fscanf(fp,"%d",a->x);
 }

и еще несколько попыток, подобных этим.Это либо ошибка сегментации, либо ошибка компиляции.Похоже, у меня возникли проблемы со знаками *, &, ->.

1 Ответ

0 голосов
/ 11 мая 2018

Следующее верно. Это должно работать.

void foo(A *a){
  fscanf(fp, "%d", &(*a).x);
}

Следующее неверно.

void foo(A *a){
  fscanf(fp, "%d", a->x);
}

a->x - это значение a->x, а не адрес a->x, который вам нужен.

Вы можете изменить его на следующее, и оно должно работать.

void foo(A *a){
  fscanf(fp, "%d", &(a->x));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...