2012-06-22 4 views
-1

Я пишу довольно простой код для ввода целых чисел, хранящихся в файле, в массив умеренного размера, но при компиляции и запуске кода он дает ошибку ошибки сегментации, может ли кто-нибудь исправить меня, где я совершить ошибку, кодОшибка сегментации с массивом

#include <iostream> 
#include <fstream> 
#include <string> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 
    int arr[100000]; 
    ifstream f; 
    f.open("IntegerArray.txt"); 
    string line; 

    if (f.is_open()) 
    { 
     int i=0; 
     while (f.good()) 
     { 
      getline(f,line); 
      arr[i++] = atoi(line.c_str()); 
     } 
     f.close(); 
    } 
    else 
     cout<<"file not open"; 
    return 0; 
} 
+6

StackOverflow на StackOverflow ...: D – Mysticial

+0

Сколько строк вы имеете в IntegerArray.txt? – kol

+0

как исправить? – adityaarun1

ответ

2

После Радинг строки из файла с getline(), поток должен быть проверен на возможные ошибки, например, с .fail(), которые:

Возвращает истину, если либо (или и то, и другое) ошибка сбоя или ошибка ошибки badbit Для потока установлены флаги.

while (f.good()) 
{ 
    getline(f,line); 

    if (f.fail()) { 
     cout << "Corrupt data" << endl; // example output 
     break; 
    } 

    // everything ok, continue with logic 
    arr[i++] = atoi(line.c_str()); 
} 
Смежные вопросы