Scanf表现不尽如人意

时间:2015-05-26 06:26:40

标签: c pointers struct

我正在尝试使用scanf()使用指针向结构输入值。您可以帮助我理解为什么我的代码无法正常工作

这是我的代码:

#include<stdio.h>
struct student
{
   int no;
   float marks;
}st[2],*s;

main()
{
  printf("enter the values");
  for(s=st;s<st+2;s++)
  {
    scanf("%d%d",&s->no,&s->marks);
  }
  for(s=st;s<st+2;s++)
  {
    printff("%d\t%d\t",s->no,s->marks);
  }
}

在此代码中scanf无法正常工作,它只取第一个值

3 个答案:

答案 0 :(得分:2)

您使用的是错误的格式说明符。 %d用于int%f用于float。使用

scanf("%d%f",&s->no,&s->marks);

printf("%d\t%f\t",s->no,s->marks);

s->marksfloat,而不是int。使用错误的格式说明符会导致未定义的行为。

答案 1 :(得分:0)

 #include<stdio.h>
     struct student
       {
      int no;
      float marks;
         }st[2],*s;


 main()
  {
 printf("enter the values");
 for(s=st;s<st+2;s++)
  {
 scanf("%d%f",&s->no,&s->marks);
  }
 for(s=st;s<st+2;s++)
   {
  printf("%d\t%f\t",s->no,s->marks);
    }
   }

U必须使用%f进行浮动

答案 2 :(得分:0)

在结构中,您使用了两个变量,<div class="list"> <a class="item item-icon-left" href="#"> <i class="icon ion-person"></i> mein Konto </a> <a class="item item-icon-left" href="#"> <i class="icon ion-navicon-round"></i> meine Bestellungen </a> <a class="item item-icon-left" href="#"> <i class="icon ion-heart"></i> meine Empfänger </a> <a class="item item-icon-left" href="#"> <i class="icon ion-email"></i> Email an uns </a> <a class="item item-icon-left" href="#"> <i class="icon ion-android-share-alt"></i> Empfehlen Sie uns weiter </a> </div> 类型而另一个是int类型,但在执行float(接受输入)时,您正在为scanf执行%d {1}}然而它应该是float浮动。这是一个非常小的错误,但你应该通过仔细查看你的代码来试图自己避免它:)

快乐编码