2012-12-25 43 views
-4

我已经尝试了下面的书面代码,但它没有奏效。我可以知道为什么吗?是否有可能通过结构指针扫描结构成员?我们可以通过结构指针来扫描结构成员吗?

#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(); 
} 
+4

它确实有效,它没有任何问题。 –

+1

您是否真的在问为什么scanf不起作用? [whathaveyoutried.com](http://whathaveyoutried.com) – Sevki

+0

顺便说一下,为什么你需要指针? '&b.price'不够好吗? – 2012-12-25 16:57:36

回答

0

该代码确实有效,并且scanf的确可以这样工作。我会引用你看一些

你读了documentation如何scanf()的作品?

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

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

你需要一个整数,一个空间,一个浮动通过,例如:

5 2.3

然后ptr->isdn将有5和ptr->price将有2.3。如果这不会发生在你身上,那么这可能不是你所有的代码,或者你错过了复制的东西?