c-无法打印构图变量的char元素

  • 本文关键字:变量 char 元素 打印 c struct
  • 更新时间 :
  • 英文 :

#include<stdio.h>
int main()
{
    struct book
    {
        char name;
        float price;
        int pages;
    };
    struct book b1, b2, b3;
    char ch;
    printf("nEnter the info of the books:n");
    while ((ch = getchar()) == 'n' && ch != EOF) { }
    scanf_s("%c", &b1.name, sizeof(char));
    scanf_s("%f", &b1.price, sizeof(float));
    scanf_s("%d", &b1.pages, sizeof(int));
    while ((ch = getchar()) != 'n' && ch != EOF) {}
    scanf_s("%c", &b2.name, 1);
    scanf_s("%f", &b2.price, sizeof(float));
    scanf_s("%d", &b2.pages, sizeof(int));
    while ((ch = getchar()) != 'n' && ch != EOF) {}
    scanf_s("%c", &b3.name, 1);
    scanf_s("%f", &b3.price, sizeof(float));
    scanf_s("%d", &b3.pages, sizeof(int));
    printf("n%c %f %d", b1.name, b1.price, b1.pages);
    printf("n%c %f %d", b2.name, b2.price, b2.pages);
    printf("n%c %f %d", b3.name, b3.price, b3.pages);
    printf("n");
    return 0;
}

任何人都可以告诉我为什么我无法在以下程序中打印B1的名称,我是新手,任何帮助。

结果

输入书籍的信息:

A 2454.45 344 
B 56566.55 355 
C 5676.66 566  

输出为:

2454.45 344 
B 56566.55 355 
C 5676.66 566`

您的问题在这里:

struct book b1, b2, b3;
char ch;
printf("nEnter the info of the books:n");
while ((ch = getchar()) == 'n' && ch != EOF) { }
scanf_s("%c", &b1.name, sizeof(char));
scanf_s("%f", &b1.price, sizeof(float));
scanf_s("%d", &b1.pages, sizeof(int));

while语句在那里完全不必要。printf((呼叫后,stdin是空的,它不会影响它,而循环却吞噬了输入的第一个字符。摆脱它,代码按预期工作。

也许还值得注意的是,您可能想在学习时坚持更多的标准功能。scanf_s是Microsoft扩展。

最新更新