gpt4 book ai didi

C 结构数组输入

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:09 26 4
gpt4 key购买 nike

我有以下结构

typedef char String[256];

typedef struct
{
String name;
int year;
float price;
} Book;

书籍数组

int main(int argc, const char * argv[])
{
Book books[5];

for (int i=0; i<5; i++) {
books[i] = inputBook();
}

return 0;
}

inputBook() 函数

Book inputBook()
{
Book myBook;

//Name
puts("Enter Book Name:");
gets(myBook.name);

//Publishing Year
puts("Enter Book Publishing Year:");
scanf("%i", &myBook.year);

//Price
puts("Enter Book Price:");
scanf("%f", &myBook.price);

return myBook;
}

由于某种原因,第一本书的输入进行得很顺利,但是当我尝试输入第二本书和第二次调用 inputBook() 时,我可以设置一个书名,它会直接跳转到年份导入.

问题是什么?

谢谢!

最佳答案

要更正,替换:

gets(myBook.name);

与:

scanf("%255s", myBook.name); /* 255 as name is 256 chars. */

因为 scanf() 会跳过任何空白字符,但 gets() 不会。换行符被认为是空白字符,在输入 price 导致 gets() 读取后,stdin 中将保留一个换行符换行符并有效地读取任何内容。

值得一读:warning:gets function is dangerous

关于C 结构数组输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11450250/

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