Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » sscanf in verbindung mit struct

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.10.2005, 23:07 Uhr
Crook



hey...

ich habe folgende Punkte in einer Textdatei:

VW+Golf+2001+grün
VW+Sharan+2003+rot
.
.

das "+" möchte ich als trennzeichen verwenden...

diese Punkte möchte ich jetzt aus einer Textdatei einlesen, in Marke, Type, Baujahr und Farbe filtern und in ein Struct array speichern!!!

hab mir dazu folgende sscanf funktion überlegt:

struct firma
{
char Marke[20];
char Type[20];
int baujahr;
char farbe[20];
};
firma vw, autos[10];

sscanf(firma, "%c %c %d %c", &Marke[20],&Type[20],&baujahr,&farbe[20]);

es funktioniert aber nicht richtig...kann mir jemand sagen wieso???

bin für jede hilfe dankbar

gruß chris
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.10.2005, 00:00 Uhr
imhotep
followed the white rabbit


1. sscanf liest aus einem String (char*) nach einem Muster in die vorgegebenen Variablen. Darum ist deine Rangehensweise da schonmal falsch.

2. Wenn du auf die Elemente einer struct zugreifen willst, musst du es anderst machen.
firma.Marke oder firma->Marke, wenn firma ein Pointer ist.

3. scanf/sscanf akzeptieren nur Leerzeichen/Tabs/Enter als Trennzeichen.

Du musst die Zeile komplett einlesen und die + selbst finden und dann die entsprechenden Teile zuordnen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.10.2005, 08:04 Uhr
Tommix



Morgen,
nicht firma.Marke sondern vw.Marke. Außerdem scannt %c nach einem Zeichen, hier ist %s gefragt. Wenn Du damit leben kannst, Leerzeichen statt + als Trenner zu verwenden, könntest Du so ran gehen (wobei allerdings der Fall, daß ein Eintrag länger als 20 Zeichen ist, nicht abgefangen wird):

C++:
#include <stdio.h>

char in[] = "VW Golf 2001 grün";

struct firma
{
    char Marke[20];
    char Type[20];
    int baujahr;
    char farbe[20];
};

firma vw;

int main ()
{
    int gelesen = sscanf(in, "%s %s %d %s", vw.Marke, vw.Type, &vw.baujahr, vw.farbe);
    return 0;
}



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.10.2005, 09:28 Uhr
Crook



danke fürn code tommix!!! der hat mir geholfen!!!!

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: