1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • 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
  • tempo
    2
    tempo
    Mitglied
    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
    8
    djmaecki
    Mitglied
    Reaktionen
    1
    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
    2
    tempo
    Mitglied
    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
    8
    djmaecki
    Mitglied
    Reaktionen
    1
    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
    2
    tempo
    Mitglied
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung