wer eines zeichens ausgeben



  • hallo leute

    folgender source;

    char *buffer = new buffer[1024];
    // buffer wird nun mit zeichen aus einer datei gefuellt
    Byte *tmp;
    (char*)tmp = buffer;
    char buf[64];
    sprintf(&buf,"%i\0",*tmp); (1)
    

    nun gibt mir der bcb beim compilieren bei (1) immer die fehlermeldung
    "Konvertierung von 'char (*)[64]' nach 'char *' nicht moeglich"

    kann mir jemand sagen was ich da falsch mache ? langsam glaub ich das ich dafuer zubloed bin.

    Meep Meep



  • Das & vor buf muss weg. Wenn du einen char buf[64] definierst, kannst du buf gleichzeitig als char * aufs erste Zeichen benutzen. Denke ich zumindest 🙂



  • Meep Meep schrieb:

    char *buffer = new buffer[1024];

    Ahja. Was ist denn buffer für ein Datentyp?

    Oder anders gesagt: Versuch bitte nicht, bei Fehlern, die sich durch ein * mehr oder weniger ergeben können, aus dem Gedächtnis irgendwelchen Code, den du nicht verstehst, einzugeben. Sondern übernimm den entsprechenden Code per Copy&Paste.



  • hab mich bei char *buffer = new buffer[1024]; verschrieben. soll natuerlich
    char *buffer = new char[1024] heissen.

    das mit dem & weglassen hat gestimmt.
    warum das so is, hab ich aber keine ahnung. ansonsten wuerde das heissen, das es bei Arrays ja nicht gibt, sondern nur pointer.

    was solls. langsam geb ichs auf

    Meep Meep



  • Das kann ich dir erklären:

    Du kannst folgendes schreiben:

    puts (buffer);     // Puts ist eine Funktion in C zur Ausgabe auf der Konsole
                        // durch das einfache angeben von buffer ohne etwas dazu
                        // Sprich kein Element wird automatisch die Adresse übergeben
    puts (&buffer[0]);  // Tut genau das gleiche nur wird hier der Zeiger auf das erste
                        // Element explizit übergeben, jedoch verwendet man normal die
                        // erste Variante
    


  • wie kann ich nun die zeichen als ascii werte ausgeben ?

    also z.b. 64,87,65,67,87 usw.

    hab´s so probiert:

    for(int i = 0; i < 4096;i++)
       {
          sprintf(buf,"   %i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i\r\n\0",
             fBuf+16*i+0,fBuf+16*i+1,fBuf+16*i+2,fBuf+16*i+3,fBuf+16*i+4,
             fBuf+16*i+5,fBuf+16*i+6,fBuf+16*i+7,fBuf+16*i+8,fBuf+16*i+9,
             fBuf+16*i+10,fBuf+16*i+11,fBuf+16*i+12,fBuf+16*i+13, 
             fBuf+16*i+14,fBuf+16*i+15);
    
          dat->Write(buf,strlen(buf));
       }
    

    aber da gibt er mir in der datei dann scheinbar adressen aus
    Auszug: 12875468,12875469,12875470,12875471,12875472,....

    irgendwie durchschau ich das ganze printf zeugs nicht, wann was funktioniert und wann nicht.

    gibts eigendlich irgendwo ne page, wo die ganzen sachen von printf aufgelistet sind, wann man sie verwenden kann und wann nicht ? waere fuer nen link dankbar.

    Meep Meep


Anmelden zum Antworten