1
我在输入“标题”和“作者”的行上出现错误。我不太确定该如何解决这个问题。枚举数据和向量错误:表达式必须是可修改的左值
struct bookStruct
{
char title[40];
char author[40];
int pages;
int year;
};
enum menu { display=1, add, end} ;
void displayOptions();
void displayBooks();
int main(){
vector<bookStruct> book(11);
string option;
book[0].title = "a";
book[0].author = "b";
book[0].pages = 23;
book[0].year = 21;
displayOptions();
cin >> option;
displayBooks(book);
return 0;
}
谢谢。我使用char数组的唯一原因是因为这是赋值所指定的。 – user2105982 2013-04-04 11:00:39
@ user2105982:如果您必须使用数组,请确保使用'strncpy',或者在复制之前自行检查长度。如果你正在复制的字符串比目标数组长,那么'strcpy'会压遍所有内存,导致可怕的错误。 – 2013-04-04 11:39:14
@MikeSeymour另一方面,'strncpy'可能不会添加终止的''\ 0''字符,所以它也很危险。 – 2013-04-04 11:41:08