我无法在这个C程序中找到错误.
#include <stdio.h>
int main()
{
struct book
{
char name ;
float price ;
int pages ;
} ;
struct book b[3] ;
int i ; int k;
for ( i = 0 ; i <= 2 ; i++ )
{
printf ( "\nEnter name, price and pages: " ) ;
k = scanf ( "%c %f %d", &b[i].name, &b[i].price, &b[i].pages ) ;
}
for ( i = 0 ; i <= 2 ; i++ )
printf ( "\n%c %f %d", b[i].name, b[i].price, b[i].pages ) ;
//getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行:
Enter name, price and pages: a 1 1
Enter name, price and pages: b 2 2
Enter name, price and pages:
a 1.000000 1
7922540190797673100000000000000000.000000 4200368
b 2.000000 2
Run Code Online (Sandbox Code Playgroud)
我想给a 1 1,b 2 2,c 3 3因为我的每个scanfs投入,但没等我在第3 scanf函数输入.为什么这样?为什么它读取我的第二次输入第三元素数组?
添加一个getchar()你的scanf()
for ( i = 0 ; i <= 2 ; i++ )
{
printf ( "\nEnter name, price and pages: " ) ;
k = scanf ( "%c %f %d", &b[i].name, &b[i].price, &b[i].pages ) ;
getchar(); //will clear the buffer
}
Run Code Online (Sandbox Code Playgroud)
小智 7
与其他说明符不同,%c与scanf一起使用时不会忽略空格.您可能希望在任何情况下都使名称字段为字符串:
#include <stdio.h>
int main()
{
struct book
{
char name[10] ; // or some suitable size
float price ;
int pages ;
} ;
struct book b[3] ;
int i ; int k;
for ( i = 0 ; i <= 2 ; i++ )
{
printf ( "\nEnter name, price and pages: " ) ;
k = scanf ( "%s %f %d", b[i].name, &b[i].price, &b[i].pages ) ;
}
for ( i = 0 ; i <= 2 ; i++ )
printf ( "\n%s %f %d", b[i].name, b[i].price, b[i].pages ) ;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |