1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C/C++: textdatei einlesen und teile extrahieren

  • tempo
  • 24. Juni 2004 um 21:49
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • tempo
    Punkte
    20
    Beiträge
    3
    • 24. Juni 2004 um 21:49
    • #1

    hallo

    ich tüfftle heute an folgendem problem herum: ich habe eine text datei geschrieben, die ich einlesen will

    ******
    Datensatznummer 6786
    ******
    45 56.55
    23 43.555
    ******
    Datensatznummer 9786
    ******
    667 .......

    ich weiss wie ich einzelne zeichen einlesen kann, ich kann alle zahlen extrahieren (zb mit fscanf.. %d oder %s...) aber ich möchte die datensatznummer, dann die dazugehörigen daten gewinnen.
    könnt ihr mir da weiterhelfen.
    danke
    Tempo :thumb:

  • djmaecki
    Punkte
    616
    Beiträge
    119
    • 25. Juni 2004 um 09:13
    • #2

    ZB so:

    Code
    int DN;
    char *str = "Datensatznummer 678";
     
    sscanf (str, "Datensatznummer %i", &DN);



    Wenn du das ganze aber in C++ machst, würde ich streams verwenden.

  • tempo
    Punkte
    20
    Beiträge
    3
    • 25. Juni 2004 um 13:00
    • #3

    danke für deine antwort

    das problem dabei ist ja, das mein Input immer anders struktieriert ist (45 2.344 oder der kopf mit den sternen und der nummer) ich bis jetzt kann ist, alle datensatz nummern oder alle daten in einer wurst auszulesen. was ich haben möchte ist, dass ich alle daten in ein feld versehen mit der zugehörigen datensatznummer abspeicher. die datensatznummer sind zufällig (nicht 1,2,3)

    lg

    zB.
    *****************************************
    * ID: 33847
    *****************************************
    71 0.540588
    72 2.463489
    73 2.154188
    74 0.004089
    *****************************************
    * ID: 154326
    *****************************************
    194 0.016921
    195 0.351825
    294 0.162982

    mein ziel:
    zb
    Feld[][] mit 194 0.016921 für ID=33847

  • djmaecki
    Punkte
    616
    Beiträge
    119
    • 25. Juni 2004 um 13:32
    • #4
    Zitat von tempo

    zB.
    *****************************************
    * ID: 33847
    *****************************************
    71 0.540588
    72 2.463489
    73 2.154188
    74 0.004089
    *****************************************
    * ID: 154326
    *****************************************
    194 0.016921
    195 0.351825
    294 0.162982

    mein ziel:
    zb
    Feld[][] mit 194 0.016921 für ID=33847

    Alles anzeigen


    Das kapier ich nicht, wieso sollte 194 0.016921 zur ID 33847 gehören?

  • tempo
    Punkte
    20
    Beiträge
    3
    • 27. Juni 2004 um 17:58
    • #5
    Zitat

    Das kapier ich nicht, wieso sollte 194 0.016921 zur ID 33847 gehören?

    Tschuldigung, das gehört natürlich nicht dazu.
    Mittlerweile habe ich eine Lösung gefunden:

    int Point;
    int firstLine = -1;
    float tuple[2];
    float data[2];
    char line[1024];

    vtkFloatArray *Stack = vtkFloatArray::New();
    SpinStack->SetNumberOfComponents(2);
    vtkIntArray *pStack = vtkIntArray::New();
    pStack->SetNumberOfComponents(2);
    FILE *file;
    file = fopen(VERZEICHNIS"test.txt", "r");
    if(file == NULL)
    {
    printf("Fehler beim Lesen!\n\n");
    return 1;
    }

    for (int i = 0; fgets(line, 1024, file) != NULL; i++)
    {
    if (sscanf(line, "* ID: %d", &Point) == 1)
    firstLine=i+2;
    if (firstLine != -1 && i - firstLine >= 0)
    {
    if (sscanf(line, "%f %f", &data[0], &data[1]) == 2)
    {
    tuple[0]=data[0];
    tuple[1]=data[1];
    Stack->InsertNextTuple(tuple);
    }
    else
    {
    tuple[0]=Point;
    tuple[1]=Stack->GetNumberOfTuples();
    pStack->InsertNextTuple(tuple);
    }
    }
    }
    fclose(file);

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum