c++ lista, funkcja usuwajaca elementy i wypelnaijaca liste / wskaznik na wskaznik
Ostatnio zmodyfikowano 2014-08-07 20:48
tookie009 Temat założony przez niniejszego użytkownika |
c++ lista, funkcja usuwajaca elementy i wypelnaijaca liste / wskaznik na wskaznik » 2014-08-07 17:07:20 czesc, mam stronke, na ktorej moge sobie dodawac odbiorcow pewnej wiadomosci. Nogdy nie wiem ile tych odbiorcow bedzie. W skripcie php zapisuje potem te dane do pliku xml. Nastepnie potrzebuje je sparsowac w c++. Do tego celu chcialem uzyc zatem listy. Chcialem takze zrobic funkcja, ktora bedzie mi w jednym obrocie kasowala cala liste i wypelniala ja. Chce, zeby obeszlo sie bez std::owskiej list. niestety, program ma juz 2. tysiace linijek, dlatego tylko najwazniejsze: struct notfs { char number[ 50 ]; char way[ 3 ]; notfs * next; };
notfs * empfaenger = NULL, * first_emp = empfaenger; XsetNotification( root, & empfaenger, & first_emp );
notfs * XsetNotification( xmlNode * root, notfs ** all, notfs ** first ) { xmlNode * node, * node2; node = XMLgetNode( root, "notifications" ); if( !node ) { printf( "Falsche Konfigurationsdatei\n" ); return NULL; } node2 = XMLgetNode( node, "adressat" ); notfs * tmp; cout << "HOERRR" <<* all << endl; while( * all != NULL ) { cout << "NOT NULL" << endl; cout << "NUMMER" <<( * all )->number << endl; tmp =* all; * all =( * all )->next; delete * all; } xmlChar * val; ( * first ) = NULL; while( node2 != NULL ) { ( * all ) = new notfs; cout << "s " <<( * all ) << endl; if(( * first ) == NULL ) ( * first ) =( * all ); val = xmlGetProp( node2,( const xmlChar * ) "nummer" ); memset(( * all )->number, 0, 50 ); strcpy(( * all )->number,( const char * ) val ); val = xmlGetProp( node2,( const xmlChar * ) "verfahren" ); memset(( * all )->way, 0, 3 ); strcpy(( * all )->way,( const char * ) val ); node2 = node2->next; ( * all ) =( * all )->next; } ( * all ) = NULL; cout << "in der Funktion" << endl; cout <<( * first ) << endl; cout <<( * first )->next << endl; cout << "dancha" << endl; return NULL; }
|
|
michal11 |
» 2014-08-07 20:10:39 Ale jaki masz konkretnie problem ? |
|
tookie009 Temat założony przez niniejszego użytkownika |
» 2014-08-07 20:48:45 wykonuje ta funkcje, zeby wypelnic liste empfaenger. Na poczatku funkcji kasuje ta liste. Potem pod first chce zapisac adres nowo utworzonego obiektu - Pierwszego w tej liscie. Nastepnie przesuwam all, az nie bedzie czym to wypelniac. Po tym mialem nadzieje, ze pod first_emp bede mial pierwszy element, ktory zostal wypelniony w petli while w funckji. Tak tez jest. Ale pod first_emp->next nie ma nastepnego elementu, tylko 0xffffff czyli po prostu falszywy adres. Nie moge zrozumiec dlaczego. Przeciez w funckji napierw zapisuje adres pierwszego all pod tym first_emp a dopiero potem przesuwam all. Wiec powinienem miec pod first->emp nastepny element (all->next).
Petla while wykonuje sie 3 razy. 3 elementy beda wczytane w ta liste na pewno. |
|
« 1 » |