如何在main函数中初始化结构对象?

时间:2017-01-12 15:59:51

标签: c

我是C编程的新手并且有一个问题。它是一个简单的程序,但不知道它为什么会出现这样的编译错误。

#include<stdio.h>
#include<conio.h>
struct Book
{
 char book_name[20];
 char auther[20];
 int book_id;
};

void main()
{
struct Book b1;
clrscr();

 b1.book_name="c++"; 
 b1.auther="xyz";
 /* Above two line show compile time error Lvalue required */ 

 b1.book_id=1002;


printf("\n Book Name= %s",b1.book_name);
printf("\n Book Auther= %s",b1.auther);
printf("\n Book ID= %s",b1.book_id);


getch();
}

1 个答案:

答案 0 :(得分:2)

C不允许从字符串("c++")到char数组(book_name)的赋值。相反,您需要复制内容:

strcpy(b1.book_name, "c++");

当然,这假设book_name足够大以包含内容。您可以查看strncpy()以防止在您熟悉上述内容后覆盖缓冲区。