我在C中有一个存储字符串的数组,我需要能够动态地追加到这个数组。将此数组的索引存储在单独的变量中是一种好的做法,还是有更好的方法可以做到这一点?这是我的代码。
首先定义这些变量
char x[10][10];
int x_index = 0;
向此阵列添加字符串
strcpy(x[x_index], "hello");
x_index += 1;
strcpy(x[x_index], "world");
x_index += 1;
答案 0 :(得分:1)
您应该将索引称为数组的长度,因为它是什么:它是数组中有效条目的数量。还有其他条目,但不应该访问它们。
这不仅是良好的做法,而且在大多数情况下需要跟踪当前的大小。否则,你怎么知道附加下一个项目?在C中,必须使用额外的变量。 (确保您可以看到该数组和长度属于一致的命名法。)
确保长度不超过数组的大小,在您的示例中为10。通常,您必须跟踪长度和大小,其中大小可以是编译时常量
if (xlen < XSIZE) strcpy(x[xlen++], str);
(当然,你也必须注意不要溢出10个字符的缓冲区。)
答案 1 :(得分:0)
对于你需要解析每个元素的数组(并且只解析,没有插入),最好在数组的末尾添加一个特殊值,例如&#39; \ 0&#39;在char数组中,以告诉解析循环何时停止。