Cześć wszystkim.
Mam napisać program, który, mając podany C-string, ma podzielić go do dwóch tablic tak, aby do jednej wpisywał jego parzyste litery, a do drugiej nieparzyste a następnie wypisywał oba nowe powstałe ciągi. Funkcja kopiująca ma być wywoływana z trzema argumentami (adres t. źródłowej, adres tabl. na wyrazy parzyste i tabl. na wyrazy nieparzyste).
Wygląda to mniej więcej tak:
Ciąg: "Trufle"
Parzysto: "T u l "
Nieparzysto: " r f e"
Oto moje wypociny:
#include "stdafx.h"
#include <iostream>
using namespace std;
void rozdzielacz(char zrodlo[], char parzyste[], char nieparzyste[]);
void drukuj(char tablica[], int rozmiar);
//++++++++++++++++++++++++++++++++++++++++++++++++++
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Program ma za zadanie dzielic podany C-string na parzyste/nieparzyste\n";
const int rozmiar = 50;
char dzielony[rozmiar] = { "Mam wszystko w tyle" };
drukuj(dzielony, rozmiar);
char parzyste[rozmiar];
char nieparzyste[rozmiar];
rozdzielacz(dzielony, parzyste, nieparzyste);
drukuj(parzyste, rozmiar);
drukuj(nieparzyste, rozmiar);
return 0;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++
void rozdzielacz(char zrodlo[], char parzyste[], char nieparzyste[])
{
int i = 0;
do
{
if(i % 2)
{
nieparzyste[i] = zrodlo[i];
parzyste[i] = ' ';
}
else
{
parzyste[i] = zrodlo[i];
nieparzyste[i] = ' ';
}
}while(!zrodlo[i++] == '\0');
if(nieparzyste[i] != '\0') nieparzyste[++i] = '\0';
else if(parzyste[i] != '\0') parzyste[++i] = '\0';
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++
void drukuj(char tablica[], int rozmiar)
{
int i = 0;
for(i =0; i < rozmiar; i++)
{
cout << tablica[i];
}
cout << endl;
}
Mój problem polega na tym, że po wywołaniu funkcji drukuj obie tablice zostają wydrukowane poprawnie do momentu, gdy skończą się w nich skopiowane znaki, a potem pojawiają się jakieś krzaki. Czy mógłby mi ktoś powiedzieć, w jaki sposób edytować funkcję drukuj, aby po wydruku skopiowanych z podanego stringu znaków "wartoścowych" (czyli wszystkich liter i znaków spacja) zakończyła swoje działanie?
Z góry dziękuję za odpowiedzi. Pozdrawiam