<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=48&amp;t=21729&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-12-23T09:19:07+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=48&amp;t=21729&amp;mode</id>
<entry>
<author><name><![CDATA[czarekgr]]></name></author>
<updated>2018-12-23T09:19:07+01:00</updated>
<published>2018-12-23T09:19:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214958#p214958</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214958#p214958"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214958#p214958"><![CDATA[
Spróbuj wyłączyć wszelkie optymalizacje kompilatora, góra -O2 , może coś z tym jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14311">czarekgr</a> — 23 gru 2018, o 09:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-12-20T10:08:50+01:00</updated>
<published>2018-12-20T10:08:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214809#p214809</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214809#p214809"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214809#p214809"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />Nie gniewajcie się koledzy, ale trochę mi to przypomina wykłady profesora &quot;mniemanologii stosowanej&quot;  Trudno jest rozważać błędy w kodzie, którego się nie widziało na oczy. Ja rozumiem, że przedstawienie do analizy na forum kodu zawierającego tysiące linii nie jest dobrą praktyką, ale zawsze można wydzielić problem do osobnego projektu, ograniczając kod do minimum, przy którym jeszcze błąd występuje.<br /></div><br />Nic dodać, nic ująć <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... dlatego ja nie włączałem się nawet (niestety) do tej dyskusji ... bo tak można sobie właśnie ... pisać, pisać zgadywać, wróżyć, gadać ... ot taka pogaducha <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 20 gru 2018, o 10:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2018-12-20T10:12:17+01:00</updated>
<published>2018-12-20T09:13:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214804#p214804</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214804#p214804"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214804#p214804"><![CDATA[
Nie gniewajcie się koledzy, ale trochę mi to przypomina wykłady profesora &quot;mniemanologii stosowanej&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Trudno jest rozważać błędy w kodzie, którego się nie widziało na oczy. Ja rozumiem, że przedstawienie do analizy na forum kodu zawierającego tysiące linii nie jest dobrą praktyką, ale zawsze można wydzielić problem do osobnego projektu, ograniczając kod do minimum, przy którym jeszcze błąd występuje.<br /><br />Skoro już jednak próbujemy zgadnąć przyczynę problemu, to chciałbym zwrócić uwagę na pewien fakt. Standard C definiuje różne podstawowe typy danych:<br /><ul><li><strong><em>char</em></strong></li><li><strong><em>signed char</em></strong></li><li><strong><em>unsigned char</em></strong></li></ul>To czy liczba jest ze znakiem, czy bez znaku, ma dla kompilatora kluczowe znaczenie przy doborze odpowiednich instrukcji asm.<br />To czy typ <strong><em>char</em></strong> zostanie potraktowany jako <strong><em>signed</em></strong> czy <strong><em>unsigned</em></strong> jest <em>&quot;machine dependent&quot;</em>, ale może też być wymuszone przez opcje kompilatora <strong><em>-fsigned-char</em></strong> i <strong><em>-funsigned-char</em></strong>. Dobrą praktyką, szczególnie w przypadku pisania kodu, który ma być przenośny, jest jawne oreślenie <em>&quot;signedness&quot;</em> typu <strong><em>char</em></strong>, czyli deklarowanie zmiennych zawsze jako <strong><em>signed char</em></strong> lub jako <strong><em>unsigned char</em></strong>.<br /><br />Bez kodu nie wiadomo, jakie operacje są wykonywane na elementach tablicy, więc to tylko zgadywanka, ale spróbowałbym zadeklarować jawnie typ <strong><em>char</em></strong> jako <strong><em>signed</em></strong> lub <strong><em>unsigned</em></strong>.<br /><br />Sądząc po tej wypowiedzi:<div class="quotetitle">Palvanen napisał(a):</div><div class="quotecontent"><br />...przyszedł mi do głowy pewien pomysł.<br />Polegał on na tym, aby zamiast od razu ładować chary do tablicy, <strong>zmienić typy tablic na int</strong> i do tablic pakować <strong>faktycznie przeliczone dane liczbowe odpowiadające znakom tablicy ASCII</strong>. I dopiero to przerabiać w drugiej kolejności na char.<br />Napisałem taką protezę do funkcji, która oprócz przeliczania do dwóch tablic powołuje jeszcze jedną tablicę (dodatkowa tablica, bo powstała proteza) gdzie przekształca to co przeliczyła z intów na chary. I dopiero to wypluwane jest na ekran.<br /><strong>No i noga chudego bociana, jak ręką odjął.</strong><br /></div>coś może &quot;być na rzeczy&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />EDIT:<br />To jeszcze bardziej przemawia za moją teorią:<br /><div class="quotetitle">Palvanen napisał(a):</div><div class="quotecontent"><br />z ciekawości chciałem wykonać kompilację na innej platformie systemowej.<br />Ponieważ nie mam aktualnie dostępu do własnego komputera, do takich celów mam w swoim telefonie zainstalowany emulator z Arch Linux for amr i zainstalowanym gcc. Wykonałem kompilację i uwaga... Działa...<br /></div><br />W kodzie dla x86 typ <strong><em>char</em></strong> jest zwykle traktowany jako <strong><em>signed char</em></strong>, a na platformę ARM - jako <strong><em>unsigned char</em></strong>.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 20 gru 2018, o 09:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lex_]]></name></author>
<updated>2018-12-19T23:43:56+01:00</updated>
<published>2018-12-19T23:43:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214794#p214794</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214794#p214794"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214794#p214794"><![CDATA[
Konwersji dokonujesz przez rzutowanie typów ? Coś musiało być zamieszane, być może mieszały się typy.<br />Z czystej ciekawości napisałem sobie coś takiego:<br />[syntax=c]#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />int main(int argc, char** argv) {<br />char tab1&#91;5&#93; = {1, 2, 3, 4, 5};<br />char tab2&#91;5&#93; = {'A', 'B', 'C', 'D', 'E'};<br />int tab3&#91;5&#93; = {'A', 'B', 'C', 'D', 'E'};<br />int tab4&#91;5&#93; = {1, 2, 3, 4, 5};<br /><br /><br />printf(&quot;%d&quot;, tab1&#91;0&#93;); puts(&quot; TAB1&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab1&#91;0&#93;); puts(&quot; TAB1&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab1&#91;1&#93;); puts(&quot; TAB1&#91;1&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;%d&quot;, tab2&#91;0&#93;); puts(&quot; TAB2&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab2&#91;0&#93;); puts(&quot; TAB2&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab2&#91;1&#93;); puts(&quot; TAB2&#91;1&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;%d&quot;, tab3&#91;0&#93;); puts(&quot; TAB3&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab3&#91;0&#93;); puts(&quot; ADRES TAB3&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab3&#91;1&#93;); puts(&quot; ADRES TAB3&#91;1&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;%d&quot;, tab4&#91;0&#93;); puts(&quot; TAB4&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab4&#91;0&#93;); puts(&quot; ADRES TAB4&#91;0&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab4&#91;1&#93;); puts(&quot; ADRES TAB4&#91;1&#93;&quot;);<br />puts(&quot;  &quot;);<br />printf(&quot;%c,%c,%c&quot;, tab4&#91;0&#93;,tab4&#91;0&#93;,tab4&#91;0&#93;); puts(&quot; TAB4&#91;0&#93;&quot;); // RZUTOWANIE<br />puts(&quot;  &quot;);<br /><br /><br /><br /><br />system(&quot;PAUSE&quot;);<br />return 0;<br />}[/syntax]<br /><br />Różne typy i różne wartości. A tutaj wyniki - raczej zaskoczenia dużego brak:<br /><a href="https://obrazkiforum.atnel.pl/2676/45588d1cff0f793d7f6acb702beb775a.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/2676/45588d1cff0f793d7f6acb702beb775a.png" alt="Obrazek" /></a><br /><br />W ostatnim wypadku jedynie pokusiłem się o rzutowanie inta na typ char tak już nieco fantazyjnie  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Typ int ma conajmniej 2 bajty więc od razu tablica się rozrasta, choć potem i tak skracasz to do 1 bajta (typ char). Elastyczność typów to czasami miecz obosieczny w C. <br />Ciekawe jednak, że program pod windowsem się wykrzaczał a linuxem sobie radził. <br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2676">Lex_</a> — 19 gru 2018, o 23:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Palvanen]]></name></author>
<updated>2018-12-19T20:04:55+01:00</updated>
<published>2018-12-19T20:04:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214781#p214781</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214781#p214781"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214781#p214781"><![CDATA[
Z tymi strukturami to pewnie by było dobre rozwiązanie tylko sęk w tym, że w przypadku zależności rozpisanych na 2,1k linii kodu ciężko to teraz uaktualnić. Ale w momencie jak pisałem o tym 0x30 dla zera (ze względu na typ char) przyszedł mi do głowy pewien pomysł.<br />Polegał on na tym, aby zamiast od razu ładować chary do tablicy, zmienić typy tablic na int i do tablic pakować faktycznie przeliczone dane liczbowe odpowiadające znakom tablicy ASCII. I dopiero to przerabiać w drugiej kolejności na char.<br />Napisałem taką protezę do funkcji, która oprócz przeliczania do dwóch tablic powołuje jeszcze jedną tablicę (dodatkowa tablica, bo powstała proteza) gdzie przekształca to co przeliczyła z intów na chary. I dopiero to wypluwane jest na ekran.<br />No i noga chudego bociana, jak ręką odjął.<br />Być może faktycznie gdzieś w obliczeniach dzieje się coś dziwnego, co powoduje, że chce upakować do tablicy chara, którego nie potrafi zidentyfikować, może jakieś kodowanie znaków ma coś wspólnego - niby proste ASCII...<br /><br />Jakie wnioski? Hmm... Jak narazie to chyba takie, że jak dużo złożonych rzeczy się robi i chce się uzyskać prawidłowy program na Windows/Linux jednocześnie, to lepiej jechać na liczbach. A jak chcemy mieć znaki, to dopiero później bawić się w konwersje. <br />Język C naprawdę jest pełen niespodzianek.<br /><br />Dziękuję serdecznie wszystkim za pomoc i być może będzie kiedyś okazja, aby i mi udało się w czymś pomóc.<br />Ale mimo wszystko oby kodzenie szło każdemu tak, żeby tych problemów było jak najmniej.<br /><br />Jeśli ktoś jakąś opinią chciałby się podzielić, to chętnie bym poczytał. A jak nie, to temat do zamknięcia?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20314">Palvanen</a> — 19 gru 2018, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Palvanen]]></name></author>
<updated>2018-12-19T18:57:36+01:00</updated>
<published>2018-12-19T18:57:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214774#p214774</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214774#p214774"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214774#p214774"><![CDATA[
Do przedmówcy:<br />Skrót myślowy. 0x0 to nawet nie 0, ponieważ żeby to było lepiej widoczne, powinno być 0x30 i wtedy by było &quot;zero&quot;. Ale ok. Wprowadziłem w błąd tym zapisem. Jak to mówią, za dużo myśli na sekundę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />W każdym razie na 100% tablice są wypełnione zerami.<br />No i teraz poszedłem wg poprzedniego zalecenia i prześledziłem adresy, oraz co w nich siedzi. Okroiłem rozmiar obu tablic do 4 parametrów.<br />Wykonałem kompilację tego kodu na Windowsie i w linuksie, tym razem w wersji desktopowej linuksa.<br />Załączam dwa obrazki. Jak widać w wynikach linuksowych zawartości tablic się zgadzają.<br />Natomiast w wersji windowsowej teraz wydarzyło się jeszcze co innego. Nie tyle pierwsza wartość została skasowana, co zostały zmienione dwie środkowe wartości. Teraz tym bardziej nie mogę ogarnąć co to może powodować. Zaznaczam, że druga tablica może mieć w obu przypadkach inne wartości po każdym wywowałniu, ponieważ są to wartości alternatywne. Najważniejsze, żeby w każdym wywowałaniu dane poszczególnej tablicy się powtarzały.<br /><br />Coraz bardziej jednak dochodzę do wniosku, że muszę mieć coś skopane w kodzie pod względem logiki, ponieważ nie powtórzył się w identyczny sposób problem przedstawiony przeze mnie w pierwszym poście. Tylko jakimś dziwnym trafem linuks to ogarnia...<br /><br /><a href="https://obrazkiforum.atnel.pl/20314/2ecd3516088569a486420c2bc7edcb72.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/20314/2ecd3516088569a486420c2bc7edcb72.png" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/20314/9e2e706496a1e9df57a98b2062218608.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/20314/9e2e706496a1e9df57a98b2062218608.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20314">Palvanen</a> — 19 gru 2018, o 18:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zealota]]></name></author>
<updated>2018-12-19T17:47:26+01:00</updated>
<published>2018-12-19T17:47:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214769#p214769</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214769#p214769"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214769#p214769"><![CDATA[
<div class="quotetitle">Palvanen napisał(a):</div><div class="quotecontent"><br />Witam.<br /><br />Napotkałem na nietypowy problem. Otóż opracowuję sobie pewien programik pomagający przeliczać stany urządzenia sterowanego AVRem. Program na PC.<br />Posiadam zadeklarowaną i uzupełnioną zerami tablicę znaków:<br />[syntax=c]char tablica_1&#91;ROZMIAR&#93; = {0x0}; //BTW: lubię hexy;<br />char tablica_2&#91;ROZMIAR&#93; = {0x0};[/syntax]<br /></div><br />Czemu uważasz, że masz dwie tablice wypełnione zerami?<br />Wg mnie masz tablice z pierwszym elementem równym 0, a reszta to losowe dane.<br />A może ta definicja tablicy to skrót myślowy?<br />No chyba, że te tablice są globalne albo static. To niestety nie wynika z kodu, który podałeś.<br />Jeśli są globalne lub static to oczywiście nie musisz ich wypełniać zerami, bo zrobi to za Ciebie kompilator.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16487">Zealota</a> — 19 gru 2018, o 17:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lex_]]></name></author>
<updated>2018-12-19T16:55:57+01:00</updated>
<published>2018-12-19T16:55:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214768#p214768</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214768#p214768"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214768#p214768"><![CDATA[
Mingw to GCC więc jest to dziwne. Ale jak będziesz miał możliwość to sprawdź bo ciekawy przypadek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2676">Lex_</a> — 19 gru 2018, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Palvanen]]></name></author>
<updated>2018-12-19T16:53:05+01:00</updated>
<published>2018-12-19T16:53:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214767#p214767</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214767#p214767"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214767#p214767"><![CDATA[
Miałem już próbować wykonać podana wyżej propozycję, ale z ciekawości chciałem wykonać kompilację na innej platformie systemowej.<br />Ponieważ nie mam aktualnie dostępu do własnego komputera, do takich celów mam w swoim telefonie zainstalowany emulator z Arch Linux for amr i zainstalowanym gcc. Wykonałem kompilację i uwaga... Działa...<br />Do tej pory wykonywałem kompilacje na Windowsie.<br />Do kompilowania zaprzęgnięte mingw w Code Blocks.<br />Czyli co? Coś jest źle napisane i mam zmieniać logikę, czy kompilator w windowsie ma problem?<br />Podejrzewam, że gdyby coś z adresami było nie tak, to byłby ten sam efekt i w linuksie.<br />Postaram się mimo wszystko późnym wieczorem lub w dniu jutrzejszym przyjrzeć jakie tam adresy latają, bo na Windowsie też musi działać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20314">Palvanen</a> — 19 gru 2018, o 16:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lex_]]></name></author>
<updated>2018-12-19T17:14:38+01:00</updated>
<published>2018-12-19T16:39:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214766#p214766</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214766#p214766"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214766#p214766"><![CDATA[
Ciekawa zagadka. Cały listing kodu byłby lepszy do analizy. Tak czy siak podejrzewałbym albo nie wpisanie wartości do tablicy lub nadpisanie tablicy nr 2 ponieważ C (może i C++) czasami optymalizuje dostęp do komórek pamięci umieszczając jedną tablicę zaraz za drugą. Wartość NULL świadczyłaby o tym że gdzieś tutaj jest problem bo inaczej byłaby jakaś wartość a tak nie jest.<br />Sprawdź czy tak jest - tzn wyświetl sobie adresy tablicy 1 i tablicy 2. Jeżeli tak jest to zmniejsz tablicę 1 i sprawdź efekt.<br /><br />:edit - napisane na szybko:<br />[syntax=c]#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />int main(int argc, char** argv) {<br /><br />//deklaracja tablic itd...<br /><br />printf(&quot;0x%.8X&quot;, &amp;tab1&#91;x&#93;); // x - np ostatni element<br />puts(&quot;  &quot;);<br />printf(&quot;0x%.8X&quot;, &amp;tab2&#91;0&#93;); <br /><br /><br /><br />system(&quot;PAUSE&quot;);<br />return 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2676">Lex_</a> — 19 gru 2018, o 16:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Palvanen]]></name></author>
<updated>2018-12-19T14:53:26+01:00</updated>
<published>2018-12-19T14:53:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214764#p214764</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214764#p214764"/>
<title type="html"><![CDATA[Re: [C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214764#p214764"><![CDATA[
Program na PC, więc int, uint, bez znaczenia. To jest taki program pomocniczy dla mnie. AVRa samego się nie czepiamy, bo tu jest ok.<br />Postaram się jeszcze ten opis skrócić, jak wygląda wypluwanie wyników w pętli.<br />Załóżmy, że przeszliśmy etap wypełnienia pętli. I dla uproszczenia wyniki:<br />1 wykonanie pętli for dla tablicy tablica_1:<br />i = 0 -&gt; wartość = 1;<br />i = 1 -&gt; wartość = 2;<br />i = 2 -&gt; wartość = 3;<br />i = n -&gt; wartość = k;<br />To samo i tak samo z tablicą wartości alternatywnych tablica_2.<br />Wyplute prawidłowo wartości z pętli są przeliczane.<br />I potrzebne ponowne wykonanie pętli. No to jedziemy:<br />tablica_1:<br />i = 0 -&gt; wartość = 1;<br />i = 1 -&gt; wartość = 2;<br />i = 2 -&gt; wartość = 3;<br />i = n -&gt; wartość = k;<br />No i jest wszystko ok.<br />Teraz druga tablica:<br />tablica_2 (wartości alterantywne):<br />i = 0 -&gt; wartość = NULL; (tylko tutaj jest problem)<br />i = 1 -&gt; wartość = 2; a dalej wypisuje prawidłowo do ostatniej wartości.<br />i = 2 -&gt; wartość = 3;<br />i = n -&gt; wartość = k;<br /><br />No i zonk.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20314">Palvanen</a> — 19 gru 2018, o 14:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Palvanen]]></name></author>
<updated>2018-12-19T14:32:02+01:00</updated>
<published>2018-12-19T14:32:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214761#p214761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214761#p214761"/>
<title type="html"><![CDATA[[C] Znikająca wartość tablicy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21729&amp;p=214761#p214761"><![CDATA[
Witam.<br /><br />Napotkałem na nietypowy problem. Otóż opracowuję sobie pewien programik pomagający przeliczać stany urządzenia sterowanego AVRem. Program na PC.<br />Posiadam zadeklarowaną i uzupełnioną zerami tablicę znaków:<br />[syntax=c]char tablica_1&#91;ROZMIAR&#93; = {0x0}; //BTW: lubię hexy;<br />char tablica_2&#91;ROZMIAR&#93; = {0x0};[/syntax]<br /><br />Kolejno obliczają się dane, które mają być zapisane do tablicy_1 oraz alternatywne dane zapisywane do tablicy_2.<br />Kolejno mam funkcję, która brzmi mniej więcej tak:<br />[syntax=c]int nazwaFunkcji(char *tablica, kolejne parametry przekazywane do funkcji){<br />    //tutaj dzieją się przekształcenia na lokalnej zmiennej buforowej;<br />    //i następuje wkopiowanie danych do tablicy:<br />    strcpy(tablica, bufor);<br />    //i zwrócenie odpowiednio 0 lub 1 w zależności od tego co wyjdzie w przekształceniach poprzez return 1 lub return 0 etc...<br />}[/syntax]<br /><br />No i ok. Powstają mi dwa ładnie wygenerowane bufory główne i alternatywne.<br />Do tablicy tablica_1 wklejany jest bufor główny, do tablicy tablica_2 wklejany jest bufor alternatywny.<br /><br />Kolejno w programie pobieram sobie kolejny wyraz z tablic i wykonują się dwie pętle na tablicy_1 i tablicy_2.<br />Niezależnie od tego w jakiej kolejności zapisuję tablice i odczytuję tablice, zawsze w drugiej pętli gubiony jest pierwszy wyraz tablicy.<br />[syntax=c]for(int i = 0; i &lt; rozmiar_tablicy; i++){<br />    rób coś z wyrazem tablica_1&#91;i&#93;; - to działa;<br />    rób coś z wyrazem tablica_2&#91;i&#93;; - to też działa za wyjątkiem tablica_2&#91;0&#93;; - tutaj jest NULL;<br />}[/syntax]<br />Adresy sprawdzane przez &quot;%p&quot; przekazywanych zmiennych się zgadzają, rozmiary tablic się zgadzają, zapisywane dane są &quot;debugowane&quot; i wyświetlane przed zapisem do tablic.<br />Typy danych zgodne z typem tablic. Przewidziany zakres miejsca w przypadku char i /0. No i tyle mi przychodzi do głowy...<br /><br />Czy jest szansa na jakąś sugestię tej zagadki?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20314">Palvanen</a> — 19 gru 2018, o 14:32</p><hr />
]]></content>
</entry>
</feed>