1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

g++ compiler fehler?

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Kain88, 11.03.09.

  1. Kain88

    Kain88 Jonagold

    Dabei seit:
    31.03.08
    Beiträge:
    21
    Hi

    Ich wollte ein paar Funktionen schreiben die mir für daten aus einer verschiedene Berechnungen durchführen. Dafür versuche ich gerade die txt datei in ein mehrdimensionales array zuschreiben. Unten habe ich meinen Programm code und die Fehler ausgabe eingefügt.

    Der Fehler liegt glaube ich darin das ich das multi dimensionale Array ohne weitere angaben nur mit dem Pointer auf das 0-te Element übergeben will. Nach allem was ich bei google finde liegt der Fehler beim compiler.

    Ich würde gerne wissen wie ich es hinbekomme ein beliebiges 2-dimensionales Array aus einer txt datei einzulesen

    dummy.dat
    Code:
    1 1 1
    2 2 1
    3 3 1
    ...
    C++ Code
    Code:
    #include <iostream>
    #include <string>
    #include <fstream>
    #include <sstream>
    
    using namespace std;
    
    int anzahlderzeilen(const string&);
    int anzahlderspalten(const string&);
    void einlesen(const string&, int*);
    
    //Fkt zum bestimmen der anzahl der zeilen
    int anzahlderzeilen(const string& datei){
        fstream werte;
        char cstring[256];
        werte.open(datei.c_str(), ios::in);
        int i = 0;
        for(;!werte.eof(); i++){
            werte.getline(cstring, sizeof(cstring));
        }
        werte.close();
        return i;
    }
    
    //Fkt zum bestimmen der anzahl der spalten
    int anzahlderspalten(const string& datei){
        fstream werte;
        char cstring[256];
        werte.open(datei.c_str(), ios::in);
        werte.getline(cstring, sizeof(cstring));
        string::size_type pos;
        int letzteleerstelle = 0; //Zeigt auf die letze gefundene Leerstelle
        int anzahlleerstellen = 0; //Wollen wir haben
        string einezeile = cstring;
        do{
            pos = (int) einezeile.find_first_of("\t ,",letzteleerstelle);
            letzteleerstelle = (int)pos + 1;
            anzahlleerstellen++;
        }while(pos!=string::npos);
        return anzahlleerstellen;
    }
    
    //Einlesen der Daten ins Array
    void einlesen(const string& datei, int **array){
        int numberoflines = anzahlderzeilen(datei);
        int numberofcolumns = anzahlderspalten(datei);
        fstream werte;
        std::string eine;
        char cstring[256];
        werte.open(datei.c_str(), ios::in);
        for(int i = 0;!werte.eof(); i++){
            werte.getline(cstring, sizeof(cstring));
            eine = cstring;
            stringstream zeile(eine);
            
            for (int n = 0; n < numberofcolumns; n++){
                zeile >> array[i][n];
                cout << array[i][n] << " ";
            }
            cout << endl;
        }
    }
    
    
    int main(){
    string datei ="dummy.dat";
    int numberoflines = anzahlderzeilen(datei);
    int numberofcolumns = anzahlderspalten(datei);
    cout << numberoflines << " ";
    cout << numberofcolumns << endl;
    int daten[numberoflines][numberofcolumns];
    einlesen(datei,(int*)daten);
    cout << daten[1][1] << endl;
    }
    
    g++ fehler ausgabe
    Code:
    Undefined symbols:
      "einlesen(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int*)", referenced from:
          _main in cc1OAqmD.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status
    
     
  2. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Du hast einlesen als
    Code:
    void einlesen(const string&, int*)
    deklariert, und als
    Code:
    void einlesen(const string&, int**)
    implementiert.

    "Two men say they're Jesus: One of them must be wrong"

    Alex
     
  3. Kain88

    Kain88 Jonagold

    Dabei seit:
    31.03.08
    Beiträge:
    21
    Ah danke, jetzt komiliert er.
    Ich bekomme leider nun nen Bus error. Schade
    Für beliebige 2d Arrays werde ich wohl nicht drum rum kommen noch ein paar Schleifen einzufügen.
     
  4. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Ja, ich habe mich gerade nur um die offensichtlichen Fehler gekümmert, für mehr fehlt grad die Zeit.

    Alex
     

Diese Seite empfehlen