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



Teraz jest 19 kwi 2024, o 21:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 30 wrz 2014, o 18:25 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Więc tak mam stworzoną strukturę w której pierwszy element jest tablica 5 znaków. Takich struktur ma byc 10 w tabeli INPUT.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Powiedzcie jaki jest prawidłowy zapis aby uzyskać taki efekt:(czyli zapis całej tablicy słowem w jednej linii)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Bo umiem zrobić tylko tak zapisując pojedyncze literki czyli elementy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2014, o 19:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lip 2013
Posty: 208
Lokalizacja: Kielce
Pomógł: 15

A tablica 2-wymiarowa?
Coś w stylu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2014, o 19:26 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

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

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2014, o 22:13 
Offline
Użytkownik

Dołączył(a): 14 paź 2012
Posty: 43
Lokalizacja: Szczecin
Pomógł: 0

xor napisał(a):
typedef struct {
                char NAZWA[5];          
               uint16_t obroty;    
               uint8_t czas ;            
    } INPUT ;
     


ale w takiej sytuacji to chyba to wyżej nie jest potrzebne, a INPUT table[10] = można zastąpić char table[10] i będzie to samo !?.
A jeżeli już mamy typ strukturalny czyli INPUT table[10] to wynika z tego że mamy tablice 10-cio elementową i wewnątrz niej możemy się odwołać do tablicy NAZWA[5], więc taki zapis

table[0].NAZWA[5] = "Text"
table[1].NAZWA[5] = "ABCD";


itd.powinien działac



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 wrz 2014, o 22:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

TomekTomek55 napisał(a):
Powiedzcie jaki jest prawidłowy zapis aby uzyskać taki efekt:(czyli zapis całej tablicy słowem w jednej linii)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Niemożliwe jest bezpośrednie przypisanie, ponieważ nie jest to wskaźnik na typ "char", a pięcioelementowa tablica znaków.
Można dokonać bezpośredniego zapisu łańcucha znakowego za pomocą poniższej funkcji:

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

Ogólnie sposobów jest wiele, bo można alokować pamięć, ale na początek to powinno wystarczyć.

jkarczew napisał(a):
xor napisał(a):
typedef struct {
                char NAZWA[5];          
               uint16_t obroty;    
               uint8_t czas ;            
    } INPUT ;
     


ale w takiej sytuacji to chyba to wyżej nie jest potrzebne, a INPUT table[10] = można zastąpić char table[10] i będzie to samo !?.
A jeżeli już mamy typ strukturalny czyli INPUT table[10] to wynika z tego że mamy tablice 10-cio elementową i wewnątrz niej możemy się odwołać do tablicy NAZWA[5], więc taki zapis

table[0].NAZWA[5] = "Text"
table[1].NAZWA[5] = "ABCD";


itd.powinien działac


Oczywiście "INPUT table[10]" nie jest równoważne "char table[10]" z przyczyn które Kolega wyjaśnił w drugim zdaniu.
Odwołując się do konkretnego indeksu tablicy "NAZWA" (swoją drogą element o indeksie 5 nie istnieje!), tak naprawdę w efekcie uzyskamy dostęp do zmiennej typu "char" do którego nie można zapisać łańcucha znakowego typu "char*"!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2014, o 13:57 
Offline
Nowy

Dołączył(a): 01 paź 2014
Posty: 15
Pomógł: 8

Lepiej troszkę zmodyfikować tę definicje struktury:

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


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


Używanie strncpy() zamiast strcpy() w przypadku gdy mamy sztywno określony rozmiar tablicy pozwoli uniknąć nieprzewidzianej jazdy po pamięci w chwili gdy zrobimy coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

lub źródło z którego kopiujemy nie ma określonego końca stringu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2014, o 17:54 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Ten sposób inicjalizacji zmiennych jednak nie chce zadziałać
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
:

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2014, o 19:47 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

a jak ci ma zadziałać skoro dodałeś do struktury jeszcze inne pola a ty chcesz inicjalizować tylko stringi, a pozostałe to co ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 paź 2014, o 20:02 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

No nie chce działać, bo to bzdura, atmel wytłumaczył dlaczego. Zadzialało by gdyby zamiast tablicy w strukturze był wskaźnik na char i to prawdopodobnie musialby być const:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A tak na marginesie: co to znaczy "nie chce działać". Podaje się (i czyta samemu) konkretne komunikaty podawane przez kompilator.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2014, o 22:27 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Ok problem z deklaracją struktur rozwiązany. Dzięki wszystkim co się do rozmowy włączyli.

Mam teraz jeszcze jeden problem a mianowicie mam zmienną bajtową:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a potrzebuje się odwoływać do poszczególnych bitów tej zmiennej. W dwie strony czyli raz odczytuje któryś bit a innym razem zapisuje bit w zmiennej.np
Zmienna1.0 = true;
Zmienna1.5 = true;
jaki jest na to sposób?

_________________
http://mojekonstrukcje.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 paź 2014, o 00:22 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 227
Lokalizacja: LDZ
Pomógł: 22

Kolego popraw mu ten kod powyżej bo chłopak źle przepisze. Chodzi mi o deklarację struktury.
Pola bitowe fajna sprawa, ale zwiększają objętość kodu (jakoś to kompilator musi obsłużyć).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lis 2014, o 22:01 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 123
Pomógł: 0

Jeszcze jedno pytanko jak zainicjować pamięć Progmem tam gdzie wstawiłem znaki zapytania:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
http://mojekonstrukcje.pl/



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: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO