【发布时间】:2015-10-12 06:10:41
【问题描述】:
这是我关于 stackoverflow 的第一个问题。如果我没有正确搜索,请原谅我,但我似乎没有找到对此的解释。只是尝试从 Bjourne Stroustroup 的论文中举一个例子。添加我的位以查看数组在我键入文本时重新调整大小。
但它似乎并没有那样工作! getchar() 只是等到我输入完所有字符,然后它将执行循环。按照逻辑,它实际上并没有进入循环,获取一个角色,执行它的动作然后迭代。我想知道这是特定于实现还是打算这样?
我在 Ubuntu 14.04 LTS 上使用带有 gcc 4.8.2 的代码块。如果重要的话,源代码在 cpp 文件中。
while(true)
{
int c = getchar();
if(c=='\n' || c==EOF)
{
text[i] = 0;
break;
}
text[i] = c;
if(i == maxsize-1)
{
maxsize = maxsize+maxsize;
text = (char*)realloc(text,maxsize);
if(text == 0) exit(1);
cout << "\n Increasing array size to " << maxsize << endl;
}
i++;
}
输出如下:
数组大小现在是:10 请输入一些文本:这是一些示例文本。我希望看到内存被重新分配在这里,但显然它不是这样工作的!
将数组大小增加到 20
将数组大小增加到 40
将数组大小增加到 80
将数组大小增加到 160
您已输入:这是一些示例文本。我希望看到内存被重新分配在这里,但显然它不是这样工作的!
数组大小现在是:160
【问题讨论】:
标签: c++ ubuntu terminal getchar