gpt4 book ai didi

c - 为什么在结构数组中使用字符元素会出现运行时错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:30 25 4
gpt4 key购买 nike

<分区>

我正在使用带有 GCC 编译器的 Codeblocks IDE。

我正在尝试在一个结构中实现具有不同类型元素的结构数组。到目前为止,每个结构数组都工作正常。但是当我使用字符类型的变量作为结构元素时,我会收到运行时错误。为什么会这样?代码是:

#include <stdio.h>
int main( )
{
struct book
{
char name ;
float price ;
int pages ;
} ;
struct book b[3] ;
int i ;
for ( i = 0 ; i <= 2 ; i++ )
{
printf ( "\nEnter name, price and pages " ) ;
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 ) ;
return 0;

}

我知道这个问题可以通过在格式字符串前使用空格作为“%c”来解决。

但是在字符数组的情况下,我在使用 gets 函数时仍然遇到同样的问题。代码是:

#include <stdio.h>
int main()
{
int i;
struct Bookinfo
{
char bname[20];
int pages;
int price;
};
struct Bookinfo book[3];
for(i=0; i<3; i++)
{
printf("\nEnter the Name of Book : ");
gets( book[i].bname); //This statement creates runtime error
printf("\nEnter the Number of Pages : ");
scanf(" %d",&book[i].pages);
printf("\nEnter the Price of Book : ");
scanf(" %d",&book[i].price);
}

printf("\n--------- Book Details ------------ ");

for(i=0; i<3; i++)
{
printf("\nName of Book : %s",book[i].bname);
printf("\nNumber of Pages : %d",book[i].pages);
printf("\nPrice of Book : %d",book[i].price);
}

return 0;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com