#include <iostream>
#include <cstring>
using namespace std;
int main(void)
{
char tab1[] = "bajka";
char tab2[] = {'b', 'a', 'j', 'k', 'a'};
cout << strlen(tab1) << endl << strlen(tab2) << endl;
cout << tab2[0] << tab2[1] << tab2[2] << tab2[3] << tab2[4] <<
tab2[5] << tab2[6] << tab2[7] << tab2[8] << tab2[9] <<
tab2[10] << tab2[11] << tab2[12] << endl;
return 0;
}
Mam taki kod i nie rozumiem kilku rzeczy:
- strlen() liczy długość bez znaku końca \0, a byłem przekonany że istniała funkcja, która liczy długość razem z nim, czy takowa rzeczywiście istnieje?
- Dlaczego dla tab1 otrzymuję strlen() równe 5, a w przypadku tab2 już 10 i wychodząc poza jej zakres od tab2[5] do tab[9] okazuje się, że drugi raz jest wyraz "bajka"? Od tab2[10] już sa krzaki.
- Czy tak zdefiniowany tab2[] w ogóle powinien mieć znak końca linii \0 na pozycji tab2[5] ?
Byłbym wdzięczny za wyjaśnienia.