Bernhard Guillon schrieb:
On 30.08.2010 15:59, lano wrote:
Nathanael Schweers schrieb:
On Mon, 30 Aug 2010 14:36:09 +0200
lano <[email protected]> wrote:
*-------net.c------*
#include <stdio.h>
#include <string.h>
#include <net/if.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#define BUFSIZE 60
unsigned char *get_mac(void) {
int sd;
struct ifreq ifr;
struct ifreq ifr; ist lokal da du es innerhalb von get_mac definiert
hast
buffer = (unsigned char *) &ifr.ifr_hwaddr.sa_data;
Hier setzt du den Wert von deinem buffer auf die Adresse von ifr das
ja lokal ist.
angezeigt------* return buffer;
Hier gibst du einen Pointer zurück der als Wert eine Adresse auf eine
lokale Variable hat.
Ok, soweit kann ich dir folgen. Jetzt würde ich denken, schreibe ich
"struct ifreq ifr;"
außerhalb der funktion dann wäre es ja global. tuts aber auch nicht.
Laut Buch und google handelt es sich wohl um eine Struktur.
&ifr.ifr_hwaddr.sa_data;
müsste dann nicht irgendwo etwas wie:
struct ifreq {
char ifr_hwaddr;
};
struct ifreq ifr;
stehn? aber was hatt es dann mit sa_data auf sich?
Da das die Adresse von einer lokalen Variable ist kannst du außerhalb
nichts mit der Adresse anfangen die in dem zurückgegebenen Pointer steht.
Soweit hab ichs gerafft
Bücher vermitteln Grundlagen und sind meistens recht gut aufgebaut.
Wenn du lieber mit Code spielst, was auch sehr wichtig ist um eine
Programmiersprache zu lernen, solltest du dennoch vieleicht mit
einfachen Programmen beginnen die gewisse C eigenheiten vermitteln.
*g* ich hab schon eine woche gebraucht bis Hallo Welt funktioniert hat.
Eigendlich geht es insgesamt nur darum
1. eine datei vom einem http-server laden
2. das was in der datei steht in eine variable stecken
2. die mac in eine variable bekommen
3. daraus eine url basteln
4. die url an den http-server senden
das ganze hab ich schon mit einem shell script getestet, dafür hab ich
15min gebraucht.
problem, das script frist zuviel power. Also hab ich gedacht,
versuchstes mal mit c.
Eigentlich hatt ich gedacht wäre das schon eine einfache sache, das es
so kommt konnt ich ja nicht ahnen.
Hoffentlich klinge ich jetzt nicht wie ein Oberlehrer oder sowas - ist
nicht meine Absicht!
Nö klingste nicht.
Scheib dir z.B. ein Programm in dem du die Gültigkeit von Variablen
(lokal/global) ausprobierst. Aanschließend noch eins in dem du call by
value und call by reference verwendest. Irgendwas mit Pointer
Arithmetic z.B. ein char Array damit zu kopieren ist warscheinlich
auch nützlich.
wenn ich mit dem jetzt irgendwie durch bin und mal wieder nen paar
nächte/wochen zeit habe, werd ichs mal versuchen, erstmal brauch ich nen
gutes buch in papierform, da werd ich morgen mal schaun.
Danach hast du es leichter und bist bei größeren Programmen nicht
gefrustet :)
An größere sachen denk ich erstmal garnicht ;)
Viel Spaß weiterhin
Bernhard
Danke -Sven-
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org