ATNEL tech-forum https://forum.atnel.pl/ |
|
problem ze stringiem https://forum.atnel.pl/topic20841.html |
Strona 1 z 1 |
Autor: | krish [ 7 cze 2018, o 18:41 ] |
Tytuł: | Re: problem ze stringiem |
Nie żałuj tak bajtów w tablicach tab01 i tab02, (bo nie ma miejsca na znak końca stringa). |
Autor: | Daro69 [ 7 cze 2018, o 19:10 ] |
Tytuł: | Re: problem ze stringiem |
witam, myślę że tablice są zmiennymi lokalnymi, tab01 i tab02 są wypełniane funkcją itoa, OK. ale tablica temp_string....? funkcja strcat dokleja do ostatniego znalezionego znaku w tej tablicy... Nie wiemy jakie są znaki w tej tablicy(przypadkowe?). hmm... |
Autor: | krish [ 7 cze 2018, o 19:27 ] |
Tytuł: | Re: problem ze stringiem |
@Daro69 -racja "temp_string" nie jest inicjowana ( nie jest globalna). Trzeba najprościej po jej deklaracji dać: temp_string[0]=0; i chyba powinno już zadziałać. |
Autor: | Daro69 [ 7 cze 2018, o 19:33 ] |
Tytuł: | Re: problem ze stringiem |
albo język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. też chyba zadziała. |
Autor: | mczarny [ 7 cze 2018, o 19:44 ] |
Tytuł: | Re: problem ze stringiem |
Daro69 napisał(a): witam, myślę że tablice są zmiennymi lokalnymi, tab01 i tab02 są wypełniane funkcją itoa, OK. ale tablica temp_string....? funkcja strcat dokleja do ostatniego znalezionego znaku w tej tablicy... Nie wiemy jakie są znaki w tej tablicy(przypadkowe?). hmm... Znaki nie są przypadkowe tylko jest tam ostatni sklejony string niestety więc krish napisał(a): @Daro69 -racja "temp_string" nie jest inicjowana ( nie jest globalna). Trzeba najprościej po jej deklaracji dać: temp_string[0]=0; i chyba powinno już zadziałać. najprostsze rozwiązanie jest najlepsze język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Dzięki Panowi można na Was liczyć jak zwykle. Działa jak chciałem ale zobaczę jeszcze jak P.Mirek robił stringa dla BMP180 |
Autor: | krish [ 7 cze 2018, o 19:59 ] |
Tytuł: | Re: problem ze stringiem |
Niezbadane są ścieżki działania kompilatora/optymalizatora. Przed chwilą testowałem oba rozwiązania na byle jakiej funkcji i o dziwo rozwiązanie Daro69 zajęło mniej miejsca niż moje ( teoretycznie wyzerowanie całej 8-bajtowej tablicy powinno zająć trochę więcej miejsca w funkcji, niż podstawienie jednego bajtu). |
Autor: | Daro69 [ 7 cze 2018, o 20:19 ] |
Tytuł: | Re: problem ze stringiem |
krish napisał(a): teoretycznie wyzerowanie całej 8-bajtowej tablicy powinno zająć trochę więcej miejsca w funkcji, niż podstawienie jednego bajtu jeżeli masz możliwość to sprawdź czy na pewno tym kodzikiem wyzerowałem wszystkie bajty czy tylko pierwszy. tuż przed powołaniem char temp_tab[8]={}; powołaj na chwilę taką samą tablicę wypełnioną znakami, np. w jakiejś zagnieżdżonej funkcji tuż przed powołaniem temp_tab, żeby za chwilę wlepić w wykorzystywane i zwolnione komórki pamięci tablicę temp_tab. mam wrażenie że kasuję tylko pierwszy bajt podczas inicjowania temp_tab, ale to wystarczy do zadziałania funkcji strcat. takie domysły. |
Autor: | krish [ 7 cze 2018, o 20:27 ] |
Tytuł: | Re: problem ze stringiem |
Właśnie najpierw sprawdziłem, że kasowane jest całe 8 bajtów i stąd zdziwienie. ps. dla strcat wystarczy pierwszy bajt=0, ale jeżeli Twój sposób jest efektywniejszy... Nie chce mi się grzebać w tej chwili w asemblerze, jak wyglądają te tablice/funkcje. |
Autor: | Daro69 [ 7 cze 2018, o 20:31 ] |
Tytuł: | Re: problem ze stringiem |
ok, dzięki. to mam następną cząstkę wiedzy. bo tak jak napisałem, "takie domysły" ............................................ No tak. przy definiowaniu można tak wyzerować wszystkie bajty, to przy kasowaniu już zdefiniowanego stringa trzeba kasować indywidualnie. np. w pętli for..... |
Autor: | mirekk36 [ 7 cze 2018, o 22:25 ] |
Tytuł: | Re: problem ze stringiem |
jeśli korzystamy z bufora zawsze od zerowej komórki i do niej coś wklejamy strcat , sprintf itp - to zdecydowanie wystarczy zapis zera do pierwszego elementu |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |