Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法再正确读取文本文件_C++_Bash_Terminal_Output - Fatal编程技术网

C++ 无法再正确读取文本文件

C++ 无法再正确读取文本文件,c++,bash,terminal,output,C++,Bash,Terminal,Output,好的,基本上这是我的程序,它读取一个文本文件,然后把它放在一个数组中,最后我打印出数组中的所有内容。程序运行良好,几天内产生了正确的结果。然而,它今天就停止工作了。例如,文本文件是 88 687 472 671 但程序完成后,输出为0 1073741824 0 1073741824。我不知道发生了什么,唯一一次我对bash做了一些更改是ulimit-s unlimited。有什么想法吗 int main(int argc, char *argv[]) { ifstream file(a

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

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;
}
intmain(intargc,char*argv[])
{
ifstream文件(argv[1]);
整型占位符;
int size=pow(2,atoi(argv[2]);
int数组[大小];
int指数=0;
while(文件>>占位符)
{
数组[索引]=占位符;
索引++;
}

对于(int i=0;i您确定程序可以读取您的文本文件吗?如果输入文件不存在,程序仍将尝试打印
argv[2]**2
来自
array
的条目,该数组不包含任何元素!程序最终会转储垃圾值

我也不知道为什么要调用
pow
调用-为什么不从
argv[2]
获取元素的数量

也可以使用C函数(<代码> ATOI ),当你可以使用C++ <代码> StrugSuth进行转换时,


当我使用您提供的输入运行您的代码时,例如:
/a.out file.txt 2
,它会按预期打印4个数字。当我这样做时:
/a.out不存在。txt 2
,它会打印4个垃圾值并将它们转储到屏幕上。

可能它没有成功打开文件。您尝试在没有打开的情况下从流读取数据t首先检查它是否有效——可能它根本没有读取任何内容,而您正在打印未初始化数据的内容。您也不检查或关心是否没有传递参数。我的意思是,如果argc小于3,size的值会是多少。我会避免使用VLAs。@drescherjm,因为我刚才假设的实现非常简单始终有两个参数,一个是文件名,另一个是n@xiaocheng<代码> int数组[大小];< /COD>使用<代码> STD::vector < /C> >,请携带可移植的C++代码!