好吧基本上这是我的程序,它读取文本文件并将其放在数组中,最后我打印出该数组中的所有内容。该程序运行良好,几天产生了正确的结果。但是,它今天就停止了工作。例如,文本文件是
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;
}
答案 0 :(得分:1)
您确定程序可以读取您的文本文件吗?如果输入文件不存在,程序仍将尝试从argv[2]**2
打印不包含任何元素的array
条目!该程序最终会转储垃圾值。
我也不确定您为什么要进行pow
来电 - 为什么不从argv[2]
获取元素数量?
此外,如果可以使用C ++ atoi
进行转换,则可以使用一些c函数(stringstream
)。
当我使用您提供的输入运行代码时,如下所示:./a.out file.txt 2
,它会按预期打印4个数字。当我这样做时:./a.out does_not_exist.txt 2
,它打印4个垃圾值并将它们转储到屏幕上。