C struct问题

时间:2010-11-16 17:20:19

标签: c struct

我正在尝试学习C语言中的结构,但我不明白为什么我不能像我的例子那样分配标题:

#include <stdio.h>

struct book_information {
 char title[100];
 int year;
 int page_count;
}my_library;


main()
{

 my_library.title = "Book Title"; // Problem is here, but why?
 my_library.year = 2005;
 my_library.page_count = 944;

 printf("\nTitle: %s\nYear: %d\nPage count: %d\n", my_library.title, my_library.year, my_library.page_count);
 return 0;
}

错误讯息:

books.c: In function ‘main’:
books.c:13: error: incompatible types when assigning to type ‘char[100]’ from type ‘char *’

4 个答案:

答案 0 :(得分:9)

LHS是一个数组,RHS是一个指针。您需要使用strcpy将指向的字节放入数组中。

strcpy(my_library.title, "Book Title");

请注意不要复制源数据&gt;这里有99个字节,因为你需要一个字符串终止空('\ 0')字符的空间。

编译器试图在某些细节上告诉你出了什么问题:

  

错误:不兼容的类型时   从中分配'char [100]'类型   输入'char *'

再次查看原始代码,看看现在是否更有意义。

答案 1 :(得分:6)

正如消息所述,问题是您正在尝试分配不兼容的类型:char*char[100]。您需要使用strncpy之类的函数来复制2

之间的数据
strncpy(my_library.title, "Book Title", sizeof(my_library.title));

答案 2 :(得分:3)

title是一个字符数组 - 这些在C中无法分配。使用strcpy(3)

答案 3 :(得分:1)

char *和char [100]是不同的类型。

您想要在.title缓冲区中复制这些char元素。

strncpy(my_library.title, "Book Title", sizeof(my_library.title));
相关问题