ďťż

Ładny brzuch

Witam

Mam problem nie tyle z uzywaniem tablicy znakow char co zrozumieniem jej, chcialbym by ktos madry mi to troszke objasnil.
Pierwsza sprawa polega na tym iz gdy deklaruje tablice znakow nie moge jej osobno zdefiniowac np
char napis[10]; napis = "qwertyuiop";
natomiast gdy zrobie tak :
char napis[10] = "qwertuiop";
to dziala

Drugi problem to fakt iz do n-elementowej tablicy moge zapisac jedynie n-1 znakow
Trzeci punkt to raczej pytanie
w jaki sposob moge polaczyc 2 tablice znakow ? (nie chodzi mi tu o napisanie calej funkcji) czy da sie to zrobic w miare krotko ?

Prosze o odp. Bede bardzo wdzieczny
Pozdrawiam



char napis[10]; napis = "qwertyuiop";

Nie można tak zrobić, bo zarówno napis jak i "qwertyuiop" są wskaźnikami i do tego stałymi, ich watości nie można zmienić w programie i już. A to przypisanie właśnie coś takiego usiłuje zrobić. natomiast jak zauważyłeś przy deklaracji można od razu inicjować tablicę, tak to już jest w C++ :blink:

Nie prawda, że do n elementowej tablicy możesz zapisać n-1 znaków. Można zapisać n znaków do n elementowej tablicy. Tylko trzeba zwrócić uwagę na dwie rzeczy:
- tablica jest numerowana od 0, więc n-ty element ma numer n-1, ale pierwszy ma numer 0. Jakby nie liczyć jest ich n.
-jeżeli chcesz, żeby to był string, czyli napis, który można wyświetlić, to ostatnim znakiem musi być NULL. A więc do dziesięcioelementowej tablicy wpiszesz tylko 9 liter, które będzie widać, a dziesiąty znak, to NULL, który się nie wyświetli. Przy czym NULL może być wcześniej niż na ostatnim miejscu, wtedy nic co jest po nim nie wypisze się (np. przy użyciu cout).

Jeżeli masz dwie tablice, to zeby je połączyć najprościej skorzystać z ajkiejś gotowej metody bibliotecznej. Można też ręcznie, ale wtedy wypada sobie napisać jakąś funkcję, która wykorzystuje pętlę, albo inną funkcję, która kopiuje całe bliki pamięci (zdaje się, że memcpy...). W bibliotekach obiektowych napisy są obiektem klasy, która już ma odpowiednie metody pozwalające łączyć napisy w bardzo prosty sposób, ale to już zależy z czego chcesz korzystać przy programowaniu.

1. do tablicy charów możesz przypisać coś w taki sposób tylko podczas inicjalizacji zmiennej (wydaje mi się też, że brakuje Ci { i } )char napis[10] = {"qwertuiop"};
Jeżeli chcesz zapisać do tablicy coś innego już po stworzeniu zmiennej to najlepiej skorzystaj z gotowej funkcji strcpy() (poszukaj sobie coś o niej)
2. Przy twoim zapisie np słowo "kot" zajmie 4 miejsca w tablicy ze względu na to że dodawany jest jeszcze NULL jako oznaczenie końca stringu.
3. Możesz przepisywać znak po znaku.

// o chodnik był szybszy :)
Użytkownik reVis edytował ten post 18 styczeń 2006, 21:25
ok juz kumam. topic -> closed

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •