mehrere variablen aus datei lesen

Dieses Thema im Forum "C/C++" wurde erstellt von mieke, 26.03.2008.

  1. mieke

    mieke Grünschnabel

    Dabei seit:
    26.03.2008
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo,
    ich hoffe, ihr wurde mit solcherlei Fragen nich schon allzu häufig belagert, aber ich weiß einfach nicht weiter.
    Ich hab eine txt-Datei die folgender Maßen aussieht/aussehen soll:

    Code:
    1 175
    2 75
    3 155
    4 0
    0 255
    etc...
    
    Zuerst kommt eine Zahl von 0 bis 4 und dann eine von 0 bis 255.

    Nun möchte ich gerne die Datei Zeile für Zeile auslesen bzw. zwei Variablen mit den beiden Zahlen jeder Zeile belegen. Ich habs schon mit sscanf und vfscanf versucht, hab aber immer nen Problem mit der Argumentenübergabe.. Ich vermute, da haut was mit den Pointern nich hin..

    Gibt es da gravierende Unterschiede in C und C++? (Ich programmiere gerade in C, würde, aber umsteigen, wenn es mit C++ einfach wäre ;) )

    Ich hab den Code leider auf meinen anderen Rechner, der is aber nich internetfähig und USB hat der auch nich - schrecklich, ich weiß aber ich hoffe, ihr habt nen paar Beispiel-Codezeilen für mich.

    Schon mal liebe Dank,
    mieke

    PS: Hab auch nix dagegen, wenn ihr ein oder zwei Worte darüber verliert, wie ich in die Text-Datei schreibe (mit Hilfe zweier Variablen)... ;)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 kotzkroete, 26.03.2008
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    Einfach mit: fscanf(file, "%d %d", &foo, &bar);
    Liesst aus dem stream "file" zwei integer aus und weiss den Variablen foo und bar selbige zu.

    Schreiben funktioniert analog mit fprintf: fprintf(file, "%d %d\n", foo, bar);
     
  4. mieke

    mieke Grünschnabel

    Dabei seit:
    26.03.2008
    Beiträge:
    5
    Zustimmungen:
    0
    und welchem Typ müssen/können foo und bar sein?
    muss das beides nen int sein oder geht auch (unsigned) char?

    und von welchem typ is file? int, stream, FILE*, ... ??
     
  5. #4 kotzkroete, 26.03.2008
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    file ist ein FILE *. Ist auch in der manpage nachzulesen ;)
    foo und bar muessen ints sein. Weiss leider nicht, wie man das mit chars machen kann, sry :/
    Koenntest dir eine Funktion bauen, die das bewerkstelligt:
    Code:
    unsigned char getuchar()
    {
            int i;
            scanf("%d", &i);
            getchar(); /* \n ueberspringen */
            return (unsigned char) i;
    }
    
    Ob das jetzt optimal ist, weiss ich nicht. Vielleicht gibt es ja auch eine bessere moeglichkeit.
     
  6. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    %c

    Steht aber auch in der manpage.
     
  7. mieke

    mieke Grünschnabel

    Dabei seit:
    26.03.2008
    Beiträge:
    5
    Zustimmungen:
    0
    aber würde ich mir %c nich nur die erste ziffer der 2. zahl bekommen?
     
  8. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Natuerlich. Ein char eben.
     
  9. mieke

    mieke Grünschnabel

    Dabei seit:
    26.03.2008
    Beiträge:
    5
    Zustimmungen:
    0
    ich brauch aber die ganze 3 stellige zahl in einem char (unsigned)... :(
     
  10. #9 kotzkroete, 26.03.2008
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    @musikK: Char ist ja nicht gleich ein ascii Zeichen.

    Also ich wurde entweder eine Funktion, wie oben genannte benutzen (kann man sicherlich noch verbessern) oder einfach ints nehmen. Intern wird sowieso oft mit ints gearbeitet.
     
  11. musiKk

    musiKk Dr. Strangelove

    Dabei seit:
    30.07.2006
    Beiträge:
    264
    Zustimmungen:
    0
    Ort:
    Leipzig
    Aber sicher ist ein char ein ASCII-Zeichen, was denn sonst?
     
  12. #11 kotzkroete, 26.03.2008
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    Ein byte. Kann den wert von -128 - 127 oder von 0 - 255 annehmen.
    Ascii ist ja nur die interpretation des bitmusters ;)
     
  13. #12 bytepool, 26.03.2008
    Zuletzt bearbeitet: 26.03.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    Natuerlich gibt es die. Ich finde String Parsing in C oder C++ ist eh eine Qual, wofuer gibt es denn Sprachen wie Perl? ;)
    Aber wenn ich nur die Wahl zwischen C und C++ haette, wuerde ich persoenlich das lieber in C++ machen.
    Siehe z.B. hier fuer eine kurze Einfuehrung:
    http://math.hws.edu/eck/cs225/s03/files_and_strings.html

    Aber wenn du eh schon in C angefangen hast, wuerde ich auch einfach dabei bleiben. Ist ja Quatsch wegen so einer Kleinigkeit die Sprache zu wechseln.

    Was spricht jetzt dagegen, die Zahlen einfach als ints einzulesen, wie hier schon vorgeschlagen wurde, und danach in strings umzuwandeln? itoa() muesste die Funktion dafuer sein.
    Siehe z.B. hier:
    http://www.daniweb.com/forums/thread11049.html

    mfg,
    bytepool
     
  14. #13 kotzkroete, 27.03.2008
    kotzkroete

    kotzkroete Doppel-As

    Dabei seit:
    22.10.2006
    Beiträge:
    132
    Zustimmungen:
    0
    Ort:
    /germany/berlin/zehlendorf
    Wer hat denn davon gesprochen, die Zahl in einen String umzuwandeln?
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 bytepool, 27.03.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Der TE:

    Ich meinte einen Null terminierten String, kein Objekt der Klasse string.

    edit:
    Denn wenn der TE meinte, er haette die Zahl gerne als byte, dann koennte man das ja auch einfach casten... Aber vielleicht habe ich das auch missverstanden.

    mfg,
    bytepool
     
  17. mieke

    mieke Grünschnabel

    Dabei seit:
    26.03.2008
    Beiträge:
    5
    Zustimmungen:
    0
    Also danke für die Hilfe!
    hab es heute hinbekommen! hatte wie schon gedacht was mit den pointern verwechselt (* statt &).. naja..
    und die ints hab ich einfach gecastet ;)
     
Thema:

mehrere variablen aus datei lesen

Die Seite wird geladen...

mehrere variablen aus datei lesen - Ähnliche Themen

  1. [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

    [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter: Hallo zusammen, ich bin an einem Punkt angekommen, wo ich nicht mehr weiter komme und hoffe ihr könnt mir weiter helfen. Anbei ein Ausschnitt aus...
  2. Mehrere SSL Vhosts

    Mehrere SSL Vhosts: Hey zusammen, Ich habe zwei verschiedene VHosts mit einem Apache 2.4 am rennen. <VirtualHost *:80> ServerName test1.de DocumentRoot...
  3. Reverse Proxy einrichten für mehrere subdomains über Port 80

    Reverse Proxy einrichten für mehrere subdomains über Port 80: Guten Tag zusammen. Ich habe folgendes Problem. Bei mir laufen 2 Apache-Tomcat Services. Einer auf Port 8880 und einer auf Port 8080. Nun habe...
  4. Problem mit 1er Freigabe und mehreren Ordnern

    Problem mit 1er Freigabe und mehreren Ordnern: Hallo Ich habe auf unseren home Server das Neuste Debian mit der neusten stabilen Samba Version. Ich habe eine Freigabe die die mehrere Ordner...
  5. Artikel: Synergy - Mehrere PCs mit einer Maus steuern

    Artikel: Synergy - Mehrere PCs mit einer Maus steuern: Auf dem Schreibtisch steht oft mehr als ein Monitor, und oft gesellt sich dazu noch ein Notebook. Mit der Client-Server-Anwendung Synergy lassen...