Witam, zacznę od razu od kodu. Otóż pisałem taką funkcję do której przekazywane są kilkucyfrowe liczby a funkcja rozbija je na osobne cyfry a wynik umieszcza w tablicy eq do której adres jest zwracany przez funkcję:
Wszystko działa tylko z zapisem do tablicy eq jest jakoś dziwnie. Mianowicie nie mogę nic zapisać pod pierwszą komórkę tablicy eq[0].
Gdy odczytuję tą tablicę zawsze na eq[0] jest cyfra 0. Nawet jak napiszę eq[0] = 3. Dlatego też wszelki zapis (a potem odczyt) muszę wykonwywać od eq[1].
Następnie, przekazaną tablicę (adres do niej) odczytuję tak:
I tutaj tablicę t również muszę odczytywać od t[1].. w przeciwnym wypadku dostaję śmieci..
Co o tym myślicie?
Pozdrawiam, Galsan
volatile uint8_t* conv_tab(int count)
{
int x; // dzielnik
uint8_t j, i = 0; // zmienna pomocnicza
volatile uint8_t *eq = 0;
div_t dv;
for(x = 1; count > x; x *= 10, i++); // wyznaczenie przedziału dziesiętnego liczby
x /= 10;
if( count < 10) // jeśli liczba jest już mniejsza od 10 - zwróć ją
{
eq[1] = count;
return eq;
}
for(j = 0; j < i; j++)
{
dv = div(count, x); // podziel cout / x
eq[1+j] = dv.quot; // wynik dzielenia wpisz do tablicy eq
count = dv.rem; // przygotowanie reszty do kolejnego dzielenia
x /= 10; // zmniejsz dzielnik 10 - krotnie
}
return eq;
}
Wszystko działa tylko z zapisem do tablicy eq jest jakoś dziwnie. Mianowicie nie mogę nic zapisać pod pierwszą komórkę tablicy eq[0].
Gdy odczytuję tą tablicę zawsze na eq[0] jest cyfra 0. Nawet jak napiszę eq[0] = 3. Dlatego też wszelki zapis (a potem odczyt) muszę wykonwywać od eq[1].
Następnie, przekazaną tablicę (adres do niej) odczytuję tak:
char j;
volatile uint8_t *t;
t = conv_tab(123);
for(j = 0; j < 3; j++)
send(t[j+1] + 48, 0);
I tutaj tablicę t również muszę odczytywać od t[1].. w przeciwnym wypadku dostaję śmieci..
Co o tym myślicie?
Pozdrawiam, Galsan
