Funkcja read() a tablice wielowymiarowe

Funkcja read() a tablice wielowymiarowe
NO
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:56
0

Witam. Ponownie zwracam się do Was z prośbą o pomoc. Prosiłbym o wyjaśnienie, jak użyć funkcji read() dla tablicy dwuwymiarowej. Szukałem w internecie, lecz nie znalazłem odpowiedzi. Napisałem coś takiego:

Kopiuj
bytes_read=read(bufor->share[bufor->begin], buf, sizeof(buf));

ale kompilator zwraca błąd Bad file descriptor.

edytowany 2x, ostatnio: flowCRANE
flowCRANE
Kod wrzucaj w znaczniki kolorujące składnię, a nie w znaczniki cytatów.
NO
Ok, zapamiętam.
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 minuty
  • Lokalizacja:Szczecin
1

Opisz szerzej problem, bo teraz to jest zgaduj zgadula.


NO
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:56
0

Bufor jest strukturą, która zawiera tablicę dwuwymiarową share oraz dwa elementy int: begin, który wskazuje na początek bufora oraz end, który wskazuje na jego koniec. Przez begin i end rozumiem wartości wymiaru po lewej stronie.
Całość ma działać w ten sposób, że zapisuję całą tablicę pod np. bufor->share[0] (tj. od bufor->share[0][0] do np. bufor->share[0][14]), przeskakuję do bufor->share[1], zapisuję, i tak aż do np. bufor->share[4][14].

edytowany 1x, ostatnio: nojaniewiem
KA
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:192
2
Kopiuj
bytes_read=read(bufor->share[bufor->begin], buf, sizeof(buf));

ale kompilator zwraca błąd "Bad file descriptor".

Co nie jest chyba dziwne, bo przecież pierwszym argumentem jest file deskryptor, a Ty jak rozumiem przekazujesz sobie jakieś z kosmosu wartości...

edytowany 1x, ostatnio: flowCRANE
NO
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:56
0

@kapojot: Faktycznie, masz rację.
Mógłbyś może doradzić, jak skopiować zawartość takiego bufora do innego bufora tak, by móc uniknąć skopiowania tablicy śmieci (podejrzewam, że zwykła pętla z przypisaniem może doprowadzić do czegoś takiego)? Czy istnieje funkcja podobna do read(), ale mogąca czytać z tablicy i zwracać liczbę odczytanych bitów?

EDIT: Nie wiem, czy to dobre rozwiązanie, ale użyłem strcpy() oraz później strlen().

edytowany 3x, ostatnio: nojaniewiem
KA
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:192
0

man 2 read
man 3 memcpy
man 3 strlcpy
man 3 strncpy

Powinno wystarczyć.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.