Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 11 lis 2024, o 17:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 28 sie 2015, o 15:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Witam !

Mam taki problem związany ze strukturami, może coś poradzicie ;) Na poczatku tworzę strukturę List w której chcę mieć 10 struktur item.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Problem w tym że jak zapisuję coś do tej struktury Item przez strukturę List

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to list.it[x].text, niezależnie ile jest x zawsze ma taką samą wartość ( w tym wypadku wskazuje na "text1"). Poczytałem w internecie i okazuje się, że muszę zarezerwowac pamięć funkcją malloc(). Tylko, że przedtem muszę zmienić Item it[10]; na wskaźnik wskaźnika Item[10] ? Tzn Item **it; ? Taki przykład widziałem w necie i już nie wiem jak mam to zrobić. Mógłby ktoś mi to łopatologicznie wyjaśnić ?

pozdrawiam,
Piotrek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2015, o 21:20 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 224
Lokalizacja: Opole
Pomógł: 24

Tutaj chyba znajdziesz odpowiedź:

topic10173.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2015, o 22:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 kwi 2014
Posty: 438
Lokalizacja: Zambrów
Pomógł: 22

W strukturze Item masz tylko wskaźnik na char o nazwie text, a chcesz mu przypisać ciąg znaków zamiast adresu na co ma wskazywać. Jeżeli chcesz zapisać w strukturze Item stringa w taki sposób jak podałeś "list.it[0].text="text";" to trzeba tam utworzyć tablicę znaków char, a nie wskaźnik, czyli np. char tekst[10];

Jednak dodatkowo z tego co pamiętam takie przypisanie nie będzie działać i do stringów trzeba użyć funkcji bodajże strcpy zamiast używać operatora "="
Te "=" można natomiast z powodzeniem stosować do typów liczbowych.

Ewentualnie by to zadziałało jak napisałeś wcześniej jeżeli w programie zdefiniowałbyś samego stringa np. tak: char tablica_tekst1[] = "tekst1"; Wtedy powinno zadziałać list.it[0].text= tablica_tekst1;

Jak się mylę to poprawcie bo z pamięci piszę i nie wiem czy dobrze prawię :)

_________________
.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2015, o 22:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2012
Posty: 159
Pomógł: 1

Kurcze jaki głupi błąd. Nie pokazałem Wam oczywiście całego kodu w którym znajduje się while:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A tu od razu widać co robię źle - za każdym razem zmieniam wartość tablicy na którą wskazuje poprzedni wskaźnik.

Przykład z pierwszego posta działa jak powinien...

pozdrawiam,
Piotrek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sie 2015, o 23:04 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

kolego klonyyy właśnie miałem napisać, że jakim cudem u Ciebie nie działa, jak u mnie praktycznie identyczne rozwiązanie działa :-), specjalnie "odkopałem" zapomniany fragment kodu. Dobrze, że się wyjaśniło.

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO