tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
8606
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MartinFS MartinFS ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    38
    Hallo,

    ich möchte aus einer Datei Daten einlesen und in einer strcut speicher.
    Als Entwicklungsumgebung kommt der BCB6 zum Einsatz... Programmiersprache also C++.

    Die Daten wären z.B.:
    2620,30,3
    2620,31,53
    2620,32,31
    2620,33,43
    2620,34,6
    Als Trennzeichen ein Komma.

    Der entsprechende Code schaut so aus.
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    stream_konfiguration = fopen("konfiguration.txt", "r");
    while ((fscanf(stream_konfiguration,"%d,%d,%d\n",&i_1, &i_2, &i_3)) != EOF)
    {
    lbVerlauf->AddItem(i_1, lbVerlauf);
    lbVerlauf->AddItem(i_2, lbVerlauf);
    lbVerlauf->AddItem(i_3, lbVerlauf);
    }
    Eingelesen wird mit "fscanf" und Ausgabe in einer ListBox. Soweit funktioniert das auch problemlos.

    Allerdings möchte ich nun auch gerne Strings in der Datei haben.
    z.B.:
    2620,30,3
    2620,31,53
    2620,32,31
    Ende_Teil_1
    2620,33,43
    2620,34,6
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    stream_konfiguration = fopen("konfiguration.txt", "r");
    while ((fscanf(stream_konfiguration,"%s,%s,%s\n",s_1, s_2, s_3)) != EOF)
    {
    lbVerlauf->AddItem(s_1, lbVerlauf);
    lbVerlauf->AddItem(s_2, lbVerlauf);
    lbVerlauf->AddItem(s_3, lbVerlauf);
    }
    Jedoch wird das Trennzeichen ',' einfach ignoriert.
    Bei der Ausgabe von String s_1 wird immer die komplette Zeile ausgegeben, s_2 und s_3 bleiben leer.

    Wo liegt denn da das Problem?

    Danke.


    gruß,
    martin

    (Bitte nicht über die teilweise nicht so idealen Variablennamen meckern, die sind erstmal nur zum testen so kurz und nichtssagend).
     

  2. #2
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Ich verstehe nciht ganz wo das Problem ist, funktioniert es nur wenn du mit %d einliesst?
    Oder kann er Ende_Teil_1 nciht einlesen?


    mfg
    umbrasaxum
     

  3. #3
    MartinFS MartinFS ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    38
    Zitat Zitat von umbrasaxum
    moin


    Ich verstehe nciht ganz wo das Problem ist, funktioniert es nur wenn du mit %d einliesst?
    Oder kann er Ende_Teil_1 nciht einlesen?


    mfg
    umbrasaxum
    Moin,

    jup, mit %d erkennt er das Trennzeichen.
    Da speichert er beim ersten Durchlauf
    2620 in i_1, 30 in i_2 und 3 in i_3

    beim zweiten
    2620 in i_1, 31 in i_2 und 53 in i_3

    etc..... so wie es sein soll.


    Wenn ich die Zeichen aber als Strings (%s) auslesen möchte, erkennt er:
    beim ersten Durchlauf
    s_1: 2620,30,3
    s_2: |
    s_3: |

    beim zweiten Durchlauf:
    s_1: 2620,32,31
    s_2: |
    s_3: |

    beim dritten Durchlauf:
    s_1: Ende_Teil_1
    s_2: |
    s_3: |


    etc....

    Einlesen tut er alles, jedoch wird das Trennzeichen dabei total ignoriert, so dass die komplette Zeile in s_1 gespeichert wird.



    gruß,
    martin
     

  4. #4
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Ja dann isses klar.

    Er fängt also an einzulesen mit %s und kommt zum _ aber _ zählt als ganz normales Textzeichen, drum gehts auch einfach weiter.
    Das Komma funktioniert mit %d, weil ein Komma im Englischen nicht als Trennzeichen für Zahlen gillt, dort isses der Punkt.


    mfg
    umbrasaxum
     

  5. #5
    MartinFS MartinFS ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    38
    Ich habe das eigentlich so verstanden, dass er jedes eingelesene Zeichen prüft, ob es dem folgenden Trennzeichen entspricht.


    Wenn ich also Strings einlesen will, komme ich an einem Leerzeichen als Trennzeichen nicht vorbei, gelle?
     

  6. #6
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Ich teste das selber mal eben, wie es bei mir geht.


    mfg
    umbrasaxum
    Geändert von Tobias K. (20.05.05 um 10:03 Uhr)
     

  7. #7
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Ja, wie es aussieht musst du ein Leerzeichen nehmen.
    Hab ein paar Sachen ausprobiert, aber es wird alles nciht als Trennzeichen akzeptiert.


    mfg
    umbrasaxum
     

Ähnliche Themen

  1. Text aus datei einlesen und in string umwandeln
    Von drachentor1 im Forum Java
    Antworten: 2
    Letzter Beitrag: 26.09.10, 14:51
  2. .txt Datei einlesen und verarbeiten
    Von Alexander87 im Forum Java
    Antworten: 7
    Letzter Beitrag: 09.11.09, 08:42
  3. c Datei einlesen und Daten verarbeiten
    Von newbie89 im Forum C/C++
    Antworten: 20
    Letzter Beitrag: 19.08.09, 13:46
  4. SWT Text-Widget: Höhenangabe wird ignoriert!!
    Von Vatar im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 09.08.05, 16:32
  5. Externe CSS-Datei wird von Mozilla ignoriert
    Von SilentWarrior im Forum CSS
    Antworten: 15
    Letzter Beitrag: 19.08.03, 17:00