c - 分配给作为指针的结构体组件

标签 c pointers struct

我正在尝试从文本文件中获取数字来放置结构的组件。

typedef struct{
 int x;
}A;

尝试1:(fp是具有读取模式的文件指针)

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

尝试2:

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

还有一些类似的尝试。要么是段错误,要么是编译错误。似乎我在使用符号 *&-> 时遇到了一些问题。

最佳答案

下列说法正确的是。它应该可以工作。

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

以下说法不正确。

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

a->xa->x的值,而不是a->x的地址,这是你的需要。

您可以将其更改为以下内容,它应该可以工作。

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

关于c - 分配给作为指针的结构体组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50296596/

相关文章:

c - 需要帮助将 qsort 与结构数组一起使用

c - 在 Go 中清除棋盘的快速算法

C 检查标准库中的错误(ret < 0 vs ret == -1)

c - 可变函数

arrays - 在谈论字符指针数组时,char *[] 和 char ** 之间的关系是什么

c++ - 对指针的常量引用

c - 返回变量为 NULL

编译器无法识别 FILE* 变量

c - Linux C 编程

c - 释放可能未初始化的结构成员