Cześć,
rozwiązuję zadanie z książki Grębosza i prawie udało mi się je rozwiązać. Treść:
Mamy dwie tablice znakowe o identycznej długości. W jednej z nich znajduje się C-string. Napisz funkcję, która przekopiuje co drugą literę z jednej tablicy do drugiej (...).
To, co udało mi się wyskrobać:
#include <cstdlib>
#include <iostream>
#include <cstdio>
using namespace std;
void klej(char cel[], char zrodlo[]);
int main(int argc, char** argv) {
char tablica1[] = {"Tekst bez większego znaczenia"};
char tablica2[sizeof(tablica1)];
klej(tablica2, tablica1);
for (int j = 0;j<=sizeof(tablica2);j++)
{
cout << tablica2[j];
}
cout << endl << sizeof(tablica2) << endl;
return 0;
}
void klej(char cel[], char zrodlo[])
{
int k = 0;
for(int i = 0;i<sizeof(zrodlo);i++)
{
if (i%2==0)
{
cel[k]=zrodlo[i];
k++;
}
}
}
Rezultat:
Tktb00020`000
31
Dlaczego tylko pierwsze cztery litery są skopiowane prawidłowo, a kolejne znaki to null (zastąpiłem znak null zerami - nie potrafiłem przekopiwać..), dwójka i apostrof?