sayso Geschrieben 1. November 2005 Geschrieben 1. November 2005 Hallo, wenn ich einen Wert der Structur hostent ausgeben will funktioniert es einfach nicht und ich finde meinen Fehler imo nicht. Vllt . könnt ihr weiterhelfen: int myfunc(int int_socketc, struct sockaddr_in *str_socketc) { unsigned long int lon_hostip; struct hostent *str_host; lon_hostip = inet_Addr(inet_ntoa(str_socketc->sin_addr)); str_host = gethostbyaddr ((char *)&lonhostip, sizeof(lon_hostip), AF_INET); if ( str_host = NULL) { fprintf (stderr, "blablabla"); } fprintf (stderr, "%s", str_host->h_name); } wenn das programm auf die fprintzeile läuft in der ich den hostnamen ausgeben will (die letzte zeile), dann bringt er mir immer einen speicherzugriffsfehler ... :beagolisc :beagolisc Der Zeiger str_socketc zeigt auf die richtige Struktur, da hier auch die IP drinsteht von der an die Socketverbindung connectiert wurde... Nur wenn ich den h_name ausgeben will bringt er mir einen Speicherzugriffsfehler... kann mir mal jemand helfen? Zitieren
Klotzkopp Geschrieben 1. November 2005 Geschrieben 1. November 2005 if ( str_host = NULL) Das ist eine Zuweisung, kein Vergleich. Du setzt hier str_host auf NULL. Dieser Ausdruck wird wiederum immer als false ausgewertet, daher wird der if-Block niemals betreten. In der nachfolgenden Anweisung greifst du dann über einen Nullzeiger auf einen Member zu. Vergleich ist ==. Zitieren
sayso Geschrieben 1. November 2005 Autor Geschrieben 1. November 2005 Das ist eine Zuweisung, kein Vergleich. Du setzt hier str_host auf NULL. Dieser Ausdruck wird wiederum immer als false ausgewertet, daher wird der if-Block niemals betreten. In der nachfolgenden Anweisung greifst du dann über einen Nullzeiger auf einen Member zu. Vergleich ist ==. *args* man ich hasse solche tippfehler - und das dumme daran ist man sieht sich nicht selbst Naja nach der Mittagspause läufts sowieso besser man dankt :e@sy Zitieren
Guybrush Threepwood Geschrieben 1. November 2005 Geschrieben 1. November 2005 Wenn dir sowas öfters passiert dann dreh den Vergleich einfach um. Wenn du es so machst: if (NULL == str_host) [/PHP] und dann nur ein = tippst dann bekommst du vom Compiler eine Fehlermeldung weil du NULL ja nichts zuweisen kannst. Zitieren
sayso Geschrieben 1. November 2005 Autor Geschrieben 1. November 2005 Wenn dir sowas öfters passiert dann dreh den Vergleich einfach um. Wenn du es so machst: if (NULL == str_host) [/PHP] und dann nur ein = tippst dann bekommst du vom Compiler eine Fehlermeldung weil du NULL ja nichts zuweisen kannst. hey, super Tipp danke Hier wird einen echt schnell und zuverlässig geholfen... werde es ab jetzt immer umdrehen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.