Ausgabe von printf in char Array,oder wie bekomm ich meine IP da rein =D



  • Hallo 🙂
    Kann man die Ausgabe von Printf in eine Char Variable umleiten?
    Grund:
    Ich habe schreib grade ne DLL für die Sprache BASCI und da möchte ich eine Funktion anbieten die die eigene IP als String zurückgibt.
    Mein Code:

    [...]
    printf("%03i.%03i.%03i.%03i", LOBYTE(Hostinfo->h_addr_list[i][0]), LOBYTE(Hostinfo->h_addr_list[i][1]), LOBYTE(Hostinfo->h_addr_list[i][2]), LOBYTE(Hostinfo->h_addr_list[i][3]));
    [...]
    

    Das ganze würde ich jetzt gerne in ein Chararray einlesen und zurückgeben 🙂
    Geht das?
    Wenn nicht wie bekomm ich das trotzdem in ein Chararray?

    mfg,
    Max_



  • So ganz hab ich dich nicht verstanden.
    Meinst du:
    sprintf() 😕



  • Hallo,
    in diesem Fall musst du sprintf statt printf verwenden. Besser noch: snprintf.



  • Wow hätt net dacht das des funzt 😃
    Naja,ich hab jetzt folgenden Code:

    #include <stdio.h>
    #include <winsock2.h>
    
    int main(void)
    {
      char my_ip[] = "";
      WSADATA Data;
      WSAStartup(MAKEWORD( 2, 2 ), &Data);
    
      char Hostname[99];
      gethostname(Hostname, 100);
    
      hostent *Hostinfo = gethostbyname(Hostname);
    
        int i = 0;
        sprintf(my_ip,"%03i.%03i.%03i.%03i", LOBYTE(Hostinfo->h_addr_list[i][0]), LOBYTE(Hostinfo->h_addr_list[i][1]), LOBYTE(Hostinfo->h_addr_list[i][2]), LOBYTE(Hostinfo->h_addr_list[i][3]));
        printf("%s",my_ip);
      return 0;
    }
    

    Aber wenn ich das ausführe dann gibt er zwar die IP aus ABER danach hängt sich das Programm auf (will Problembericht senden)
    Weiß jemand warum?

    Danke schon mal,
    Max



  • Ja, der Speicher, in den du reinschreiben willst, ist DEUTLICH zu klein ("char my_ip[]="";" legt ein Array mit EINEM char an, du benötigst *rechnet* mindestens 16).



  • Stimmt
    Danke dir 🙂

    MAx


Anmelden zum Antworten