datei operationen



  • c.rackwitz schrieb:

    in einem char ist das aber der gleiche wert :p

    jetzt fängst du auch noch damit an...
    EOF passt *nicht* in einen 'char' 😡



  • tuerlich nicht. der wird abgeschnitten. deswegen ist in einem char -1 == 255 (modulo 256), weshalb getchar() auch einen ganzen int zurueckgibt (scheinbar daten >=0 und eof == -1).

    lesen, dann fluchen. meinen verstand habe ich noch. du auch?



  • Kuckuck.

    Ich wusste bisher gar nicht, das es implementationsabhängig ist,
    ob char dem Datentyp signed char oder unsigned char entspricht.
    Der Datentyp char kann also je nach Compiler signed oder unsigned sein.
    Bei meinem Compiler ist char signed und darum gibts auch keine
    Probleme beim EOF einlesen.
    Probleme hätten auftreten können, wenn in einer Datei der Wert 0xFF stünde.
    0xFF würde als EOF ausgelegt werden, eventuell noch folgende Werte würden nicht gelesen und das ist großer Käse.

    Wäre char signed, dann könnte ich glaub ich auf das EOF ziemlich lange warten,
    oder das Programm würde abstürzen, denn EOF wird von signed char nicht erkannt.
    Wie gut das es nun mittlerweile auch schon bis zu mir durchgedrungen ist.
    Darüber hab ich mir offen gestanden bisher gar einen Kopp gemacht und darum an dieser Stelle Dank an diejenigen, die mich eines besseres belehrt haben.

    Ach und übrigens wird die Modulo-Arithmetik nur bei unsigned Datentypen angewendet, kann also nie negativ werden und abgesehen davon 255 modulo(256) ist 255.

    255%256 == 255 && 255%256 != -1
    

    Ich wünsche allen Boardies noch einen schönen Tag !



  • proggingmania schrieb:

    Probleme hätten auftreten können, wenn in einer Datei der Wert 0xFF stünde.
    0xFF würde als EOF ausgelegt werden, eventuell noch folgende Werte würden nicht gelesen und das ist großer Käse.

    nein, das ist kein problem. EOF ist kleiner als 0 oder grösser als 0xff
    🙂



  • vista schrieb:

    nein, das ist kein problem

    🙂 doch doch 🙂

    Denn:

    (signed char)0xFF ==  EOF;
    

    Was dann beim Einlesen zum Abbruch der Schleife führt, alles was noch eventuell folt wird nicht mehr eingelesen.
    🕶



  • proggingmania schrieb:

    alles was noch eventuell folt

    Kauf dich tüte deutsch, hat mich auch gehilft, das heißt folgt du Vogel.
    MfG



  • proggingmania schrieb:

    Denn:

    (signed char)0xFF ==  EOF;
    

    nö, EOF ist (int)-1 und weil ein 'int' mindestens 16 bits haben muss, ist z.b. EOF 0xffff oder 0x1ffff oder 0x3ffff oder 0x7ffff usw... aber niemals nur 0xff
    🙂



  • Yes sir, das ist dem Lesevorgang aber egal, weil doch nur Byteweise gelesen wird.
    In deinem Beispiel wäre das erst 0x1f , dann 0x2f und bei 0xFF würde EOF interpretiert.
    Stimmt oder hab ich Recht. 😉



  • proggingmania schrieb:

    In deinem Beispiel wäre das erst 0x1f , dann 0x2f und bei 0xFF würde EOF interpretiert.
    Stimmt oder hab ich Recht. 😉

    nee, weil EOF und 0xff sich unterscheiden.
    0xff in einem 16bit 'int' ist 0x00ff und EOF ist im selben datentyp 0xffff.
    weil der computer ganze ints betrachtet, wenn es um EOF geht, gibt's dabei keine verwechselung.
    🙂



  • es sei denn man nimmt chars wie proggingmania, dann geht alles futsch.



  • Wie wir alle wissen gibt es EOF als recordset und als error!



  • 😮 Recordset in ANSI C 😮



  • Nochmal langsam für alle (besonders für dich, proggingmania ;)) zum Mitmeißeln: EOF ist kein char und steht auch nicht als expliziter Wert in deiner Datei. Sobald du natürlich die Rückgabe von getch() auf char-Größe zusammenpresst, kannst du es nicht mehr von dem (in einer realen Datei durchaus möglichen) char-Wert (char)0xFF (implementierungsabhängig entweder -1 oder 255) unterscheiden. Daß EOF ((int)-1) und (signed char)-1 zufällig den selben Wert darstellen, ist dann belanglos.

    proggingmania schrieb:

    proggingmania schrieb:

    alles was noch eventuell folt

    Kauf dich tüte deutsch, hat mich auch gehilft, das heißt folgt du Vogel.

    Wenn die Trolle schon anfangen, sich selbst zu attackieren, können wir uns ja hier zurückziehen 😃 🕶



  • CStoll schrieb:

    ...und steht auch nicht als expliziter Wert in deiner Datei.

    Bingo, mein Reden.

    CStoll schrieb:

    Wenn die Trolle schon anfangen, sich selbst zu attackieren.

    Ähm, hüstel, wie bitte, Trolle ?



  • proggingmania schrieb:

    CStoll schrieb:

    ...und steht auch nicht als expliziter Wert in deiner Datei.

    Bingo, mein Reden.

    Und wieso versuchst du dann seit ca. 4 Seiten uns zu erklären, daß EOF in ein char reinpassen könnte?

    CStoll schrieb:

    Wenn die Trolle schon anfangen, sich selbst zu attackieren.

    Ähm, hüstel, wie bitte, Trolle ?

    Wenn du der Meinung bist, daß du kein Troll bist, brauchst du dich auch nicht angesprochen zu fühlen 😃 Ich fand's nur lustig, daß du dich selbst (oder läuft hier noch ein anderer "proggingmania" herum?) mit einem "Kauf dich tüte deutsch, hat mich auch gehilft..." angeplfaumt hast.



  • CStoll schrieb:

    Und wieso versuchst du dann seit ca. 4 Seiten uns zu erklären, daß EOF in ein char reinpassen könnte?

    Passt ja auch rein, vom Wert her 😃
    Ich habe halt 4 Seiten lang gebraucht um zu kapieren, das es unter Umständen nicht unbedingt günstig ist, mit einem char EOF abzufragen. 😉



  • proggingmania schrieb:

    Ich habe halt 4 Seiten lang gebraucht um zu kapieren, [...]

    traurig.

    greetz, Swordfish



  • wenn du es traurig nennst, dass einer ueber 4 seiten so tut, als ob er es nicht rafft...



  • Wäre beides traurig.

    greetz, Swordfish



  • So oder so. Die Luft ist raus aus dem Thread. Ich schliesse die Peinlichkeit mal.


Anmelden zum Antworten