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