动态初始化字符数组

时间:2012-08-15 08:19:14

标签: c++ c arrays multidimensional-array

我想在运行中使用指针初始化一个char数组。这是用户提供输入不知道数组的大小。用户继续提供输入,直到返回被按下。条件是:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

std :: string有一个方法push_back,std :: vector也能完成这项工作。如果你真的被迫使用动态数组和char指针,我建议你实现类似于vector中使用的重新分配策略 - 每次元素数量大于当前大小时,大小加倍。