Witam. Piszę program "książkę telefoniczną" i mam problem z listą. Jak wyszukuję konkretnej nazwy w strukturze to jeżeli w którejś strukturze nazwa występuje to dostaję jej wskaźnik. Chcę wtedy tę strukturę wyświetlić. Niestety prawidłowo jest wyświetlane tylko pole "Imię i nazwisko"; "adres" i "nr telefonu" są przedstawione jako krzaczki :(
Program mam do napisania na jutro, myślałem że to będzie łatwa robota i zacząłem dopiero dziś, szukałem błędu i nie widzę żadnego. Może wy coś zauważycie?
Kod do WindowsApplication w pliku tekstowym:
0
0
Pobieżnie przejrzałem kod - gdzie alokujesz pamieć do przechowywania ciągów: "nazwa" i "adres"?
0
W którym miejscu? Bo we wszystkich funkcjach występuje taka nazwa.
0
Zmieniłem troszkę kod i nie wyszukuję po imieniu i nazwisku tylko wyświetlam wszystkie pozycje w jednym polu tekstowym.
Zobaczcie ten kod, skompilujcie i uruchomcie, a następnie dodajcie jakiś wpis. Wyświetlą się krzaczki. Ale jak dodacie drugi wpis to wyświetlą wam się krzaczki jako drugi wpis i pierwszy wpis będzie wyświetlany prawidłowo. Według mnie coś nie tak mam z wyświetlaniem ostatniego elementu tablicy. Ale nie wiem co ;]
Tu jest funkcja odpowiedzialna za wyświetlanie w Edicie:
void pokazListe(){
struct element *tmp;
tmp=pierwszy;
char * Bufor = (LPSTR)GlobalAlloc(GPTR, 10000);
while(tmp!=NULL)
{
strcat(Bufor, "Numer Telefonu: ");
strcat(Bufor, tmp->numer);
strcat(Bufor, "\r\nImię i Nazwisko: ");
strcat(Bufor, tmp->nazwa);
strcat(Bufor, "\r\nAdres: ");
strcat(Bufor, tmp->adres);
strcat(Bufor, "\r\n\r\n");
tmp=tmp->nast;
}
strcat(Bufor, "\0");
SetWindowText(hS,Bufor);
}
A tutaj cały kod źródłowy