带有结构的错误输出显示
Wrong output display With Structures
我试图在 C 程序中执行以下结构,但它不起作用。它没有正确打印给定的值。
#include<stdio.h>
#include<conio.h>
int main()
{
struct book
{
char name;
int page;
float price;
};
struct book b1, b2, b3;
clrscr();
printf("\n 1st data \n");
scanf("%c%f%d",&b1.name,&b1.price,&b1.page);
printf("\n 2nd data");
scanf(" %c%f%d",&b2.name,&b2.price,&b2.page);
printf("\n3rd data");
scanf("%c%f%d",&b3.name,&b3.price,&b3.page);
printf("%c%f%d",b1.name,b1.price,b1.page);
printf("%c%f%d",b2.name,b2.price,b2.page);
printf("%c%f%d",b3.name,b3.price,b3.page);
getch();
return 0;
}
每次我 运行 上面的代码,我都会得到不同的输出..其中之一是::
....输出....
data
p
1
2.2
s
2
3.3
p0.1000002.1.00000022015s-?.<00000000000000000000000000000e+15315872
什么?您遇到了错误的程序行为并且您没有检查单个 return 值?例如,对于 scanf(3)?
所以,在你的 scanf 中你要求 "float" 然后 "decimal integer",但在你的示例中你似乎传递了整数然后浮点数作为你输入标准输入的内容(见输出为你粘贴了你的问题——c、d、f;不是 c、f、d)。此外,"Oldest Software Guy" 是正确的——您需要检查您的 return 代码(这样这种事情就不会发生),大多数人可能会建议您使用 "sscanf" 和 "fgets" 作为一个更安全的选择,尤其是当您开始尝试将 "name" 扩展到多个 "char".
时
提供第二个输入后,输入缓冲区可能已满,因此不接受第三个输入。尝试在每次输入后使用 fflush(stdin) .
我试图在 C 程序中执行以下结构,但它不起作用。它没有正确打印给定的值。
#include<stdio.h>
#include<conio.h>
int main()
{
struct book
{
char name;
int page;
float price;
};
struct book b1, b2, b3;
clrscr();
printf("\n 1st data \n");
scanf("%c%f%d",&b1.name,&b1.price,&b1.page);
printf("\n 2nd data");
scanf(" %c%f%d",&b2.name,&b2.price,&b2.page);
printf("\n3rd data");
scanf("%c%f%d",&b3.name,&b3.price,&b3.page);
printf("%c%f%d",b1.name,b1.price,b1.page);
printf("%c%f%d",b2.name,b2.price,b2.page);
printf("%c%f%d",b3.name,b3.price,b3.page);
getch();
return 0;
}
每次我 运行 上面的代码,我都会得到不同的输出..其中之一是:: ....输出....
data
p
1
2.2
s
2
3.3
p0.1000002.1.00000022015s-?.<00000000000000000000000000000e+15315872
什么?您遇到了错误的程序行为并且您没有检查单个 return 值?例如,对于 scanf(3)?
所以,在你的 scanf 中你要求 "float" 然后 "decimal integer",但在你的示例中你似乎传递了整数然后浮点数作为你输入标准输入的内容(见输出为你粘贴了你的问题——c、d、f;不是 c、f、d)。此外,"Oldest Software Guy" 是正确的——您需要检查您的 return 代码(这样这种事情就不会发生),大多数人可能会建议您使用 "sscanf" 和 "fgets" 作为一个更安全的选择,尤其是当您开始尝试将 "name" 扩展到多个 "char".
时提供第二个输入后,输入缓冲区可能已满,因此不接受第三个输入。尝试在每次输入后使用 fflush(stdin) .