2012-06-22 3 views
-1

J'écris un code assez simple pour entrer des entiers stockés dans un fichier dans un tableau de taille modérée, mais en compilant et en exécutant le code, cela donne une erreur de segmentation, quelqu'un peut me corriger où je suis faire une erreur, le code estSegmentation fault with array

#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 sur stackoverflow ...: D – Mysticial

+0

Combien de lignes avez-vous dans IntegerArray.txt? – kol

+0

comment dois-je le corriger? – adityaarun1

Répondre

2

Après rading une ligne à partir d'un fichier avec getline(), le flux doit être vérifié pour les erreurs potentielles, par exemple avec .fail(), qui:

Renvoie true si l' (ou les deux) la statistique d'erreur ou d'erreur badbit Les indicateurs e sont définis pour le flux.

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