c - C - 实践 - 结构和函数 - 输入错误
问题描述
我正在使用结构和函数练习 C。当我要求用户输入有关书籍的信息时,代码运行良好,直到我要求输入出版商名称,这里我总是得到返回 EXIT_FAILURE 无论输入是什么。我认为我在写变量的方式中犯了一些错误,scanf
因为它是另一个结构中的结构,我仍然没有完美地理解这个问题。
下面是代码(它不完整):
#define MAXB 2
#define MAXSTR 100
typedef struct date // publication date
{
int day, month, year;
}DATE;
typedef struct authors
{
char authorName[MAXSTR];
char authorwebp[MAXSTR];
DATE birthDate;
}AUTHOR;
typedef struct publishers
{
char publisherName[MAXSTR];
char publishAddress[MAXSTR];
}PUBLISHER;
typedef struct books
{
char title[MAXSTR];
char type[MAXSTR];
PUBLISHER publisher;
AUTHOR author[5];
DATE publishDate;
}BOOK;
void add_book( BOOK *b )
{
if (scanf(" %[^\n]s", b->publisher.publisherName) !=1); // always getting EXIT_FAILURE
return EXIT_FAILURE;
}
int main()
{
BOOK b[MAXB];
add_book(b);
}
预先感谢您的帮助。
解决方案
"if (scanf(" %[^\n]s", b->publisher.publisherName) !=1); <-去掉分号"
@ser3121023、@Luke_ 和 @Alejandro Montilla 回答了问题。
推荐阅读
- javascript - Bootstrap 按钮在移动设备上被“卡住”,而不是桌面设备。Vuejs
- javascript - 来自嵌套对象数组的动态面包屑
- sql - 从计数中选择不同的计数(*)
- c++ - 提高检测OpenCV
- python - 即使 pypi.org 在配置中,pip conf 也会忽略我的 extra-index-url 并超时
- windows - CMake 不工作 - 非常困惑 - Windows 10
- node.js - NodeJs 打字稿和模块问题
- javascript - HTMLFormElement 更改事件支持
- angular - 在不带括号的函数内调用函数
- python - 如何使用 Python 中的 Pygsheets 库合并 Google 工作表中的单元格