我们可以通过结构体指针扫描结构体成员吗?

标签 c

我已经尝试了下面编写的代码,但它不起作用。我可以知道为什么吗?是否可以通过结构体指针扫描结构体成员?

#include<stdio.h>
#include<conio.h>
struct book
{
  int isdn;
  float price;
 };
 struct book b,*ptr;
 void main()
 {
   clrscr();
   b.isdn=10;
   b.price=150.75;
   printf("\n%d %f",b.isdn,b.price);
   ptr=&b;
   printf("\n%d %f",ptr->isdn,ptr->price);
   scanf("%d %f",&ptr->isdn,&ptr->price); //this statement do not work,why?
   printf("\n%d %f",ptr->isdn,ptr->price);
   getch();
 }

最佳答案

该代码确实有效,并且 scanf 也确实以这种方式工作。我会推荐您阅读一些内容

您读过documentation吗?关于 scanf() 是如何工作的?

您需要完全按照格式字符串指定的方式传入数据。所以在你的情况下:

scanf("%d %f",&ptr->isdn,&ptr->price); 

需要传入一个整数、一个空格、一个 float ,例如:

5 2.3

那么 ptr->isdn 将有 5,ptr->price 将有 2.3。如果您没有遇到这种情况,那么这可能不是您的全部代码,或者您可能错过了复制某些内容?

关于我们可以通过结构体指针扫描结构体成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032453/

相关文章:

c++ - 在 AT&T 内联汇编中将 float / double 设置为常量值

c - printf ("\n")\n 在我的代码 VS2013 中的任何地方随机停止工作

c - 如何在 C 中打印 double 数组?

c++ - 为什么函数accept()和recv()中地址长度参数是指针?

c - 编译可能具有依赖性的特定 C 程序的最佳方法是什么?

c - 如何在 C 中的 fork 进程上使用 POSIX 信号量?

c - (*p)->some_var 和 *p->some_var 之间的任何功能差异

c - 从一个字符串到堆栈的推送、弹出和显示函数

c - 消息不会在服务器端打印 - 套接字

c - 在 Raspberry PI 上用 C 从图像中读取 RGB 数据