va_list: function (char * format, ...);



  • jo, und irgendwann machts dann *buf*

    gut ausgedrückt *g*

    (ja, ist sicher nicht wünschenswert)

    int vsnprintf(char *str, size_t size, const char *format,va_list ap);

    das einzigste wo ich probleme festellen konnte ist wenn format nicht den parametern enspricht was man dieser funktion übergeben hat...

    klärt mich mal auf, sorry ich weiss grad echt ned was ihr meint

    " snprintf and vsnprintf do not write more than
    size bytes (including the trailing '\0'), and return -1 if
    the output was truncated due to this limit."

    von der länge her passt das für buf also auch...

    sorry, keine ahnung 😕 😕

    aber es funzt trotzdem 😃



  • was du brauchst ist buf[4096]

    Lies dir das Kapitel ueber Zeiger und Arrays in deinem Buch nochmal durch, du scheinst es noch nicht ganz verstanden zu haben...



  • hi!

    irgendwie kann ich mich grad ned einloggen, naja egal,

    ich versteh nicht was ihr meint, sorry, zeiger hab ich denk ich schon kapiert...

    ich verwende den borland c - compiler, vielleicht entspricht der auch nicht 100%ig dem c- standard und ich hab deswegen keine probleme?

    könnt ihr mir vielleicht ein beispiel sagen wann es mal *buf* macht ?

    das die funktion einen char [] will ist mir klar, aber warum es mit char * [] nicht gehen soll / probleme gehen kann versteh ich nicht, c castet den char * doch auch zu char []? sonst würde es doch sicher probleme geben wenn es das nicht tun würde?!

    gebt mir mal einen grösseren tip, ich steh grad voll auf dem schlauch...

    danke für die hilfe,

    maconey



  • c castet den char * doch auch zu char []?

    Stimmt, das geht sogar in beide Richtungen.

    Aber: char*[] wird zu char**. Also ein Zeiger auf einen Zeiger.



  • ja also, wo liegt dann das problem...?!



  • char* und char*[]

    die sind ein klein wenig unterschiedlich!
    Findest du den Unterschied?

    nochmal:
    char* und char[] kann man beliebig austauschen (es sind nur kleine unterschiede zwischen den Beiden)

    Aber char* und char*[] ??
    Du kannst mir sicher sagen, welchen type buffer hat:
    char* buffer[512];
    oder?



  • char* buffer[512];

    das ist ein char [512] auf den ein pointer zeigt die länge ist im gegensatz zu
    char * festgelegt

    einer von uns beiden liegt wohl jetzt falsch 🙂

    und ich glaub ich bins, aber warum weiss ich leider nicht

    schönes wochenende und gruss 🙂

    matthias



  • char* buffer[512];

    lesen wir mal von rechts nach links (wie man das ja immer tun sollte)

    Ein Array bestehend aus 512 Elementen vom Type char*

    AH

    Ein Array aus 512 char-zeigern

    das wollten wir natuerlich nicht - wir wollten ja
    Ein Array bestehend aus 512 Element vom Typ char
    also:

    Ein Array:                                 []
    bestehend aus 512 Elementen:               [512]
    vom Typ char:                              char[512]
    dem geben wir noch den namen buffer:       char buffer[512]
    und jetzt die deklaration abschliessen:    char buffer[512];
    

    Immer von rechts nach links lesen!



  • achso

    mit meinen worte:
    also ein array mit lauter pointern auf einen char

    hehe blödsinn 🙂

    danke!

    ich bin noch einer der von der delphi fraktion kommt, da wird ja andersrum deklariert, deswegen vllt dieses unveerständnis!

    gruss und grosses danke!

    matthias



  • Original erstellt von maconey:
    **ich bin noch einer der von der delphi fraktion kommt, da wird ja andersrum deklariert, deswegen vllt dieses unveerständnis!
    **

    Macht ja nix. Jetzt weisst du ja, dass du von rechts nach links lesen musst!

    Wenn es dir zu unverstaendlich ist, kannst du ja auch klammern:

    char* (buffer[512]);

    dann sieht man auch schoen, das es etwas anderes ist.


Anmelden zum Antworten