Cześć,
Miałem za zadanie skopiowanie zawartości z jednej tablicy znaków do dwóch innych tak, żeby w jednej znajdowały się same wyrazy parzyste, a w drugiej same nieparzyste, po każdym zaś wyrazie miała być spacja. Z problemem już sobie poradziłem, jednakże ciągle zastanawia mnie, dlaczego ten kawałek kodu powodował segmentation fault oraz dlaczego instrukcja break nie wyskakiwała z tej pętli for, byłbym wdzięczny, gdyby ktoś mógłby mi to mógł wytłumaczyć.
#include <iostream>
void string_kopia(char zrodlo[], char parzyste[], char nieparzyste[]);
void wyswietl(char tabl[], int ile);
using namespace std;
const int rozmiar = 120;
int main(int argc, char** argv)
{
char wypowiedz[rozmiar] = {"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu."};
char parz[rozmiar] = {};
char nieparz[rozmiar] = {};
string_kopia(wypowiedz, parz, nieparz);
wyswietl(wypowiedz, 80);
cout << endl;
wyswietl(parz, 80);
cout << endl;
wyswietl(nieparz, 80);
cout << endl;
return 0;
}
void string_kopia(char zrodlo[], char parzyste[], char nieparzyste[])
{
int ktory = 0, n =0, p = 0;
for(int i = 0; i < rozmiar && zrodlo[i] != '0'; i++)
{
if(ktory % 2)
{
do{
if(zrodlo[i] == '0') break;
nieparzyste[n] = zrodlo[i];
cout << "a teraz niep: " << nieparzyste[n] << endl;
n++;
}while(zrodlo[i++] != ' ' );
}
else
{
do{
if(zrodlo[i] == '0') break;
parzyste[p] = zrodlo[i];
cout << "a teraz parz: " << parzyste[p] << endl;
p++;
}while(zrodlo[i++] != ' ');
}
if(zrodlo[i] == '0') break;
ktory++;
cout << "Zmienna ktory: " << ktory << endl;
}
}
void wyswietl(char tabl[], int ile)
{
for(int i = 0; i < ile; i++)
{
cout << tabl[i];
}
}