Extrahiere substring von string

bigbang

Grünschnabel
Ich habe ein kleines console programm das dir deine ip anzeigt und von der ip dann den host namen auflöst(reverse dns) und dir dann ip und host namen
auf den screen druckt.
ein example beispiel
Code:
IP: 12.34.567.89
Host Name: dslb-012-034-567-089.pools.myisp-ip.net

nun möchte ich
Code:
dslb-012-034-567-089.pools.myisp-ip.net
zu
Code:
dslb.pools.myisp-ip.net
konvertieren oder ähnlichem.
mein ziel ist es die nummern und das
Code:
-
zeichen vom host name string zu entfernen, weil meine ip ist eine dynamische ip und ändert sich jede 24 stunden
automatisch.
es sollte anfangen das erste
Code:
-
zeichen zu finden und von dort aus bis zum ersten
Code:
.
zeichen oder letzten nummer im host namen string und dann die
unerwünschten zeichen entfernt und nur den gewünschten host name string ohne die ip nummern und die
Code:
-
zeichen anzeigen.
ich benutze msvc++ als kompiler.

wie würde ich das tun?

jede hilfe und hinweise sind mehr als erwünscht.
 
Hallo,

es wäre wohl sinnvoller, wenn man einfach den ersten Teil des Hostnamens weglässt (aus dslb-012-034-567-089.pools.myisp-ip.net wird pools.myisp-ip.net), da sich der genaue Aufbau von Provider zu Provider unterscheidet.

Leider hast du nicht angegeben, ob du eine Lösung für C oder für C++ möchtest.

Grüße,
Matthias
 
Danke Matthias, ich konnte es mit hilfe von einem guten online freund lösen, sein tip war:
#include <stdio.h>

void main()
{
char host[]="dslb-012-034-567-089.pools.myisp-ip.net";

printf("\n %s ", host);
strcpy(strchr(host,'-'),strchr(host,'.'));
printf("\n %s",host);

}

output:

dslb-012-034-567-089.pools.myisp-ip.net
dslb.pools.myisp-ip.net

ich hab es modifiziert zu:
char* cShortHost = host->h_name;
strcpy(strchr(cShortHost, '-'), strchr(cShortHost, '.'));

printf("\nShortHost Name: %s", cShortHost);

ich brauch den code in c++. eine frage, was meinst du mit "es wäre wohl sinnvoller, wenn man einfach den ersten Teil des Hostnamens weglässt"?

also das resultat des console programms sieht bei mir momentan so aus:
IP=12.34.567.89
HOST=dslb-012-034-567-089.pools.isp-ip.net
SHORT HOST=dslb.pools.isp-ip.net

meinst du es gibt eine möglichkeit, die reverse dns ohne den ip string zu extrahieren, dann könnte man sich den strcpy(strchr(cShortHost, '-'), strchr(cShortHost, '.'));

teil sparen. das endresultat sollte so ungefähr aussehen dslb.pools.isp-ip.net
 
Zurück