C-实践-结构和函数-输入错误

C-实践-结构和函数-输入错误,c,function,input,struct,nested,C,Function,Input,Struct,Nested,我正在使用结构和函数练习C。当我要求用户输入关于这本书的信息时,代码运行良好,直到我要求输入出版商名称,这里我总是得到返回EXIT\u FAILURE no matther输入是什么。我认为我在scanf中编写变量的方式有一些错误,因为它是另一个结构中的一个结构,我仍然不能完全理解这个问题 下面是代码(它不完整): 提前感谢您的帮助。“if(scanf(“%[^\n]s”,b->publisher.publisherName)!=1);删除if语句中的分号,并且void函数永远不能返回行中的EX

我正在使用结构和函数练习C。当我要求用户输入关于这本书的信息时,代码运行良好,直到我要求输入出版商名称,这里我总是得到返回EXIT\u FAILURE no matther输入是什么。我认为我在
scanf
中编写变量的方式有一些错误,因为它是另一个结构中的一个结构,我仍然不能完全理解这个问题

下面是代码(它不完整):


提前感谢您的帮助。

“if(scanf(“%[^\n]s”,b->publisher.publisherName)!=1);删除if语句中的分号,并且void函数永远不能返回
行中的EXIT\u failure(scanf(“%[^\n]s”…=1)
您有一个
,这就是为什么您总是返回
退出失败
,删除它并检查代码是否符合您的预期。它正在工作,谢谢大家。@Luke_uu我应该将函数更改为int吗?@LuísOliveira是的,退出失败扩展为1,退出成功扩展为0
#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);
}