无法正常读取文本文件

时间:2014-11-24 18:34:51

标签: c++ bash terminal output

好吧基本上这是我的程序,它读取文本文件并将其放在数组中,最后我打印出该数组中的所有内容。该程序运行良好,几天产生了正确的结果。但是,它今天就停止了工作。例如,文本文件是

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;
}

1 个答案:

答案 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个垃圾值并将它们转储到屏幕上。