000
09.03.2023, 20:07 Uhr
WMW
|
Hallo, Ich habe hier ein kleines Problem mit meinem Struktur array. Ich übergebe die Adresse von der gewünschten Struktur an eine Funktion um sie zu befüllen. Aber wie die Ausgabe zeigt, ist nachher der Zeiger im Strucktur array immer noch auf NULL und der Eintrag ist auch nicht vorhanden.
Was mache ich falsch? Danke für Hilfe.
C++: |
#include <stdio.h> #include <stdlib.h> #include <console.h>
void Einfuegen(struct STRUCT_WOERTERBUCH *tWoerterbuch); void Free(struct STRUCT_WOERTERBUCH **taWoerterbuch);
typedef struct STRUCT_WOERTERBUCH { unsigned int uiLZW_Code; struct STRUCT_WOERTERBUCH *tWeiterer_Eintrag; }STRUCT_WOERTERBUCH;
int main() { int iCounter1 = 0; STRUCT_WOERTERBUCH **taWoerterbuch; taWoerterbuch = (STRUCT_WOERTERBUCH**)malloc(10 * sizeof(*taWoerterbuch));
// init for(iCounter1=0;iCounter1 < 10;iCounter1++) taWoerterbuch[iCounter1] = NULL; printf("taWoerterbuch[5] vorher:%p\n",taWoerterbuch[5]);
Einfuegen(&(*taWoerterbuch[5])); printf("taWoerterbuch[5] nachher:%p\n",taWoerterbuch[5]); printf("taWoerterbuch[5]->uiLZW_Code:%u\n",taWoerterbuch[5]->uiLZW_Code);
Free(&(*taWoerterbuch));
return(0); }
void Einfuegen(struct STRUCT_WOERTERBUCH *tWoerterbuch) { int iCounter1 = 0; STRUCT_WOERTERBUCH *tWoerterbuch_Temp = tWoerterbuch; // letzten eintrag suchen und eintragen while(tWoerterbuch != NULL) tWoerterbuch = tWoerterbuch->tWeiterer_Eintrag; tWoerterbuch = (STRUCT_WOERTERBUCH*)malloc(sizeof(STRUCT_WOERTERBUCH)); tWoerterbuch->uiLZW_Code = 10; if(tWoerterbuch_Temp != NULL) tWoerterbuch = tWoerterbuch_Temp; }
void Free(struct STRUCT_WOERTERBUCH **taWoerterbuch) { long lCounter1 = 0;
STRUCT_WOERTERBUCH *tWoerterbuch_Temp1 = NULL; STRUCT_WOERTERBUCH *tWoerterbuch_Temp2 = NULL; for(lCounter1=0;lCounter1 < 10;lCounter1++) { tWoerterbuch_Temp1 = taWoerterbuch[lCounter1]; while(tWoerterbuch_Temp1 != NULL) { tWoerterbuch_Temp2 = tWoerterbuch_Temp1->tWeiterer_Eintrag; free(tWoerterbuch_Temp1); tWoerterbuch_Temp1 = tWoerterbuch_Temp2; } } }
/*
Ausgabe:
taWoerterbuch[5] vorher:00000000 taWoerterbuch[5] nachher:00000000 taWoerterbuch[5]->uiLZW_Code:65485
*/
|
Dieser Post wurde am 26.03.2024 um 15:13 Uhr von FloSoft editiert. |