Warum nicht der ASCII Wert?



  • Komisch schrieb:

    Wie komme ich dann an die 116? Gibt es da einen einfachen Trick?

    Der cast ist das einfachste: http://ideone.com/gDFwFG



  • DirkB schrieb:

    116 ist 0x74

    498216206336 ist 0x7400000000

    Bsp: int ist 32-Bit Little-Endian. Übergeben wird zweimal c (in Hex)
    74000000 00000000 74000000 00000000

    printf holt sich ein int für das %c.

    Aber ob ich ihm einen int oder einen char gebe, dass erkennt printf doch ohne Probleme?



  • Achso ok vielen Dank.

    Eine Sache hätte ich allerdings noch:

    Ich schreibe in eine Datei folgendes:

    fprintf(encfile, "%llu\n", c_new);
    

    Dann steht dort im Anschluss z.B. (der Teil funktioniert):
    58
    67
    36
    9

    Nun möchte ich den Inhalt lesen und weiterverwenden:

    fscanf(decfile, "%llu\n", c);
    printf("%llu", c);
    

    Als Ausgabe bekomme ich wieder riesige Zahlen - möchte aber eigentlich genau die Werte aus der Datei. Wie mache ich dies richtig?



  • fscanf erwartet Adressen auf die Variablen (und nicht deren Inhalt)

    fscanf(decfile, "%llu", &c);  // Das \n ist nicht nötig, da bei %u die Whitespace überlesen werden
    


  • die scan-Fuktionen verändern den übergebenen Parameter, d.h. du mußt dort einen Zeiger (Adresse der Variablen) übergeben:

    fscanf(decfile, "%llu\n", &c);
    printf("%llu", c);
    


  • Schalte doch mal die Warnungen vom Compiler an bzw. beachte sie.

    Beim gcc wäre das -Wall oder zumindest -Wformat



  • logisch - autsch - ähm alles klar danke - hab ich einfach übersehen

    allerdings besteht das Problem weiterhin also er gibt weiterhin riesige Zahlenwerte die den gesamten 64Bit Bereich füllen aus. z.B.: 11536662113036736



  • Nochmal zusammenfassend wo ich gerade hänge:

    Die Datei sieht wie folgt aus:
    15
    1
    15
    71

    nun möchte ich aus dieser Datei die Zahl von jeder Zeile lesen:

    (gekürzt zusammengeschrieben für das Lesen der Zahl aus der ersten Zeile)

    File *decfile = fopen(path, "w+");
    long long unsigned c;
    fscanf(decfile, "%llu\n", &c);//fscanf(decfile, "%llu", &c); <-- geht auch nicht
    

    anschließend steht in c der Wert:
    11536662113036640

    Wie bekomme ich den Wert 15 in c? (Das Problem sieht für die anderen gelesenen Zeilen genauso aus)



  • Mit gekürztem Code kann hier niemand was anfangen.
    So wie es jetzt da steht ist die Datei leer, wenn Du zu fscanf() kommst. ("w+").

    Wertest Du den Rückgabewert von fsanf() aus?



  • ... k danke, das wars ich überschreibe die Datei... traurig trotzdem danke - ich glaub ich geh schlafen


Anmelden zum Antworten