0

我想使用指针即时初始化一个字符数组。即用户输入不知道数组的大小。用户一直提供输入,直到按下返回。这里的条件是:

  • 使用指针初始化
  • 不要提前传递数组的大小。
4

2 回答 2

3

假设一个 C 问题,如何(未经测试):

char *arr = malloc(10);
size_t size = 10, index = 0;
int ch;
while ((ch = getc(stdin)) != EOF && ch != '\n' && ch != '\r') {
    if (index >= size) {
        size *= 2;
        arr = realloc(arr, size); /* XXX check it first. */
    }
    arr[index++] = ch;
}
arr[index] = 0;

如果它真的是一个 C++ 问题,你想要std::getline一个std::string.

于 2012-08-15T08:24:21.063 回答
0

std::string 有一个方法push_backstd::vector 也可以完成这项工作。尽管如此,如果您真的被迫使用动态数组和字符指针,我建议您实施类似于向量中使用的重新分配策略 - 每次元素数量大于当前大小时,大小加倍。

于 2012-08-15T08:25:23.263 回答