用C语言采集并显示结构数据类型的输入。

问题描述 投票:0回答:1

这是我的非常简单的结构体数据类型代码,却无法工作。

我想让我的程序做的是读取用户的输入,然后将数字插入到结构体中。然而,我不知道如何做,因为我得到的只是垃圾值。

我的代码是:

#include<stdio.h>
#include<stdlib.h>

struct book {
    char name;
    float price;
    int pages;
};

void main(){
    struct book b1, b2, b3;
    printf("\nEnter neme , prices & pages of 3 books \n");
    scanf("%c %f %d",&b1.name, &b1.price, &b1.pages);
    scanf("%c %f %d",&b2.name, &b2.price, &b2.pages);
    scanf("%c %f %d",&b3.name, &b3.price, &b3.pages);

    printf("\nAnd this is what you entered\n");
    printf("%c %f %d\n",b1.name, b1.price, b1.pages);
    printf("%c %f %d\n",b2.name, b2.price, b2.pages);
    printf("%c %f %d\n",b3.name, b3.price, b3.pages);
}
c printf scanf structure
1个回答
0
投票

只要在scanf语句中字符的占位符前输入一个空格就可以了。像这样。代码应该可以正常运行。

    scanf(" %c %f %d",&b1.name, &b1.price, &b1.pages);
    scanf(" %c %f %d",&b2.name, &b2.price, &b2.pages);
    scanf(" %c %f %d",&b3.name, &b3.price, &b3.pages);

问题是,当你按键盘上的回车键移动到下一行,为第二条scanf语句提供输入时。第二行中的"%c "将'\n'作为输入,这就把顺序搞乱了。记住"%c "或char表示名称只能由1个字符组成。

© www.soinside.com 2019 - 2024. All rights reserved.