【发布时间】:2015-01-22 13:48:57
【问题描述】:
好吧,基本上这是我的程序,它读取一个文本文件并将其放入一个数组中,最后我打印出该数组中的所有内容。该程序运行良好,并在几天内产生了正确的结果。但是,它今天刚刚停止工作。例如文本文件是
88
687
472
671
但是在程序完成后,输出是 0 1073741824 0 1073741824。我不知道发生了什么,唯一一次我对 bash 进行了一些更改是 ulimit -s unlimited。有什么想法吗?
int main(int argc, char *argv[])
{
ifstream file(argv[1]);
int placeholder;
int size = pow(2,atoi(argv[2]));
int array[size];
int index = 0;
while (file >> placeholder)
{
array[index]=placeholder;
index++;
}
for(int i = 0; i<size; i++)
{
cout<<array[i]<<endl;
}
return 0;
}
【问题讨论】:
-
可能没有成功打开文件。您尝试从流中读取而没有首先检查它是否有效——也许它根本没有读取任何内容,并且您正在打印未初始化数据的内容。
-
您也不会检查或关心是否没有传递参数。我的意思是如果 argc 小于 3,size 的值是多少。我会避免使用 VLA。
-
@drescherjm 为了实现的简单性,我假设总是有两个参数,一个是文件名,第二个是 n
-
@xiaocheng
int array[size];请改用std::vector<int>,以获得可移植的c++代码!