fscanf <bestimmten Bereich nur lesen>



  • Ich weiß das das Thema schon oft aufgegriffen wurde, nur habe ich kein Antwort auf meine Frage gefunden.

    Ich will aus einer Datei Daten auslesen die wie folgt sortiert sind

    zahl:name:vorname:straße:HsNr:plz:ort
    zahl:name:vorname:straße:HsNr:plz:ort
    zahl:name:vorname:straße:HsNr:plz:ort
    usw.
    ich will nun in einen struct diese Daten einlesen.

    struct adress
    {
    	char strasse[30];
    	char plz[6];
    	char ort[20];
    };
    struct person
    {
    	int nummer[2];
    	char vorname[20];
    	char name[20];
    	struct adress adr;
    	};
    

    Wenn ich das nun mit fscanf realisieren will liest er ja bis zum \0.
    Wie kann ich fscanf dazu bringen das er nur bis zum : liest 😕

    2.Frage ich wollte eigentlich Ort und HsNr in einen Char bringen, leider habe ich hier das gleich Prob mit dem \0.

    Beide Probleme habe ich mir schon überlegt durch Schleifen und Fgetc zu realiesieren nur finde ich das sehr aufwändig 😮

    thx für eure Hilfe



  • nur zu 1. 😉

    ich an deiner Stelle würde eher mit ifstream arbeiten, denn da hast du gleich eine Funktion, die genau das macht,was du willst^^

    ifstream pfile;
    pfile.open("UT2004.ini");
    char buf[1001];
    pfile.getline(buf,1000,':');
    

    und schon hast du was du brauchst^^



  • Sorry hatte vergessen das ich das alles auf der Konsole machen will/soll und mit dem Borland 5.01 (muss leider). Leider gibt es hier den Befehl nicht



  • ESS_CB, hier ist C, nicht ifstream.



  • fscanf() ist sehr flexibel einstellbar, du mußt nur die richtigen Format-Codes kennen 😉 Und in deinem Fall gilt - %s liest alles bis zum nächsten Whitespace, %[^:] liest alles bis zum nächsten Doppelpunkt (in den eckigen Klammern listest du alle für deinen Zweck gültigen Zeichen auf, das ^ dreht die Auswahl um).


Anmelden zum Antworten