fehler beim zugreifen auf undefinierte variable
-
hallo an alle,
ich arbeite gerade mit structs und kann mir im bezug auf einen fehler einfach nicht mehr weiterhelfen... wahrscheinlich stehe ich auf dem schlauch...
kann mir jemand weiterhelfen? das wäre sehr nett und würde mir ungemein helfen!
hier der quelltext und die fehlermeldung:
Run-Time Check Failure #3 - The variable 'mypars' is being used without being defined.
#include <stdio.h>
#include <string.h>
#define PRALEN 2
#define DATALEN 2struct parser
{
char eth_p[PRALEN];
char eth_data[DATALEN];
};void parseStruct(struct parser, char);
int main(void)
{
int j=0;
struct parser mypars;
char dat[6];dat[0] = 'h';
dat[1] = 'u';
dat[2] = 'h';
dat[3] = 'u';parseStruct(mypars,dat);
printf("\n%c",mypars.eth_p[0]);
printf("\n%c",mypars.eth_p[1]);
printf("\n%c",mypars.eth_data[0]);
printf("\n%c",mypars.eth_data[1]);scanf("%i", &j);
return 0;
}void parseStruct(struct parser pars, char data[4])
{
pars.eth_p[0] = data[0];
pars.eth_p[1] = data[1];
pars.eth_data[0] = data[2];
pars.eth_data[1] = data[3];return;
}
vielen dank für jede hilfe!
-
Ändere void parseStruct(struct parser, char); in void parseStruct(struct parser, char*); und es kompiliert bei mir.
Wird aber nichts gescheites bei rauskommen, da du der Funktion nur eine Kopie des Structs übergibst und somit mypars unverändert bleibt.
-
Die Funktion parseStruct() arbeitet mit einer lokalen Kopie deiner struct, also wird das Hauptprogramm nichts davon bemerken, daß du dort etweas eingetragen hast. Wenn du eine Wirkung nach außen sehen willst, mußt du die struct als Pointer übergeben:
void parseStruct(struct parser* pars, char data[4]) { pars->eth_p[0] = data[0]; pars->eth_p[1] = data[1]; pars->eth_data[0] = data[2]; pars->eth_data[1] = data[3]; } ... parseStruct(&mypars,dat);
PS: Übrigens passt die Funktionsdefinition nicht zum Prototyp - ersterer erwartet ein char-Array/-Pointer, letztere einen einzelnen char.
PPS: sfds