这是我的非常简单的结构体数据类型代码,却无法工作。
我想让我的程序做的是读取用户的输入,然后将数字插入到结构体中。然而,我不知道如何做,因为我得到的只是垃圾值。
我的代码是:
#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);
}
只要在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个字符组成。