首页 文章

未在此范围内声明(C中的数组)[关闭]

提问于
浏览
-8

我是C编程的初学者我有一个文本文件,其中有100万个素数用空格分隔 . 我想把它们放在一个int数组primes []中 . 以下是我写的代码:

int main()
{
    ifstream infile;
    infile.open("C:/Users/DELL/Desktop/primes1.txt");

    //check for error
    if(infile.fail()){cerr<<"Error Opening File"<<endl;
    exit(1);}
    int i=0;
    primes = new int[1000001];
    while(i != infile.eof()){
        infile>>primes[i];
        i++;
    }

    cout<<  primes[4]  <<endl;

    return 0;
}

当我构建并运行时,它会出现以下错误:

“错误:'primes'未在此范围内声明”

这是什么解决方案?

3 回答

  • 5

    我强烈建议在堆上使用向量而不是数组来防止资源泄漏:

    std::vector<int> primes;
    int p;
    while (infile >> p)
    {
        primes.push_back(p);
    }
    
  • 1

    C很漂亮,它的库里有很好的东西,允许你以高级,简洁,声明的方式做到这一点:

    std::vector<int> primes(std::istream_iterator<int>{infile},
                            std::istream_iterator<int>{});
    
  • 5

    这是什么解决方案?

    声明 primes . 必须首先声明标识符才能为其分配内容 .

    例如:

    int *primes = new int[1000001];
    

相关问题