【发布时间】:2017-01-20 16:43:21
【问题描述】:
迭代可变字符串数组的最佳方法是什么?例如:
struct Book{
char chapter_names[20][50];
int chapters;
...}
int main(){
struct Book Redwall;
strcpy(*chapter_names, "The Wall");
strcpy(*(++chapter_names), "The Grove");
printf("Chapter 1: %s", chapter_names[0]);
printf("Chapter 2: %s", chapter_names[1]);
return 0;
}
我希望这个输出是:
Chapter 1: The Wall
Chapter 2: The Grove
这段代码导致
error: lvalue is required as increment operand
【问题讨论】:
-
当你试图编译这段代码时发生了什么?
-
将其编辑到问题中
-
chapter_names是一个数组。你不能增加一个数组... -
你不能增加一个数组,无论是普通数组还是结构成员。使用索引——它并不痛苦,而且很容易阅读并且很难(呃)出错。
-
排序,但数组不是指针。
array转换为&array[0]并且它们是相同的类型,但&array是不同的类型(尽管具有相同的初始值)。给定int array[10];,那么&array是一个int (*)[10]——一个指向10 个整数数组的指针;添加 1(即&array + 1)会使您访问超出数组范围,这与在范围内的array + 1完全不同。数组不是指针。而且你不能增加数组名称。
标签: c arrays string multidimensional-array strcpy