C结构代码编译但未运行

时间:2012-05-01 03:38:59

标签: c structure

我今天学习了(自学)C语言中的结构基础知识并编写了这个简单的代码。它正在编译而没有任何错误。我知道成功的编译并不能保证无错误的软件。执行时,它仅扫描两个结构变量的输入,并给出错误的显示。为了简单起见,我选择了一个字符来存储书名。我无法弄清楚这里的错误。你能找到一个吗?

#include<stdio.h>

int main(void)
{
    struct book
    {   char name;
        float price;
        int pages;
    };

    struct book b[3];

    int i;

    for (i = 0; i <= 2; i++){
        printf("\nEnter name, price and pages ");
        scanf("%c %f %i", &b[i].name, &b[i].price, &b[i].pages);
    }

    for (i = 0; i <= 2; i++)
        printf("\n%c %f %i",b[i].name, b[i].price, b[i].pages);

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您需要通过添加while((ch=getchar())!='\n');来删除“额外”输入(以刷新输入缓冲区)(请声明char ch;):

for (i = 0; i <= 2; i++){
   printf("\nEnter name, price and pages ");
   scanf("%c %f %i",&b[i].name,&b[i].price, &b[i].pages);
   while((ch=getchar())!='\n'); //eat the chars
 }

教程/帖子:

  1. "Flushing" the input stream
  2. How to Get User Input from console -- safely.