struct card
{
int value;
char* colour;
};
void easy_move(int a, int n)
{
char input[1000]; card card;
cin.getline(input, 1000);
for (int i = 1; i <= n;i++) {
if (i == a) {
cin.getline(input, 1000);
char* wyraz = strtok(input, " ");
for (int j = 0; j < 4;j++)
wyraz = strtok(NULL, " ");
card.value = atoi(wyraz);
wyraz = strtok(NULL, " ");
card.colour = wyraz;
cout << card.value <<" "<< card.colour << endl;
}
else cin.getline(input, 1000);
cin.getline(input, 1000);
if(i==a)cout<<card.value<<" "<<card.colour<<endl;
}cout << card.value << endl << card.colour << endl;
}
Cześć, tak jak napisałem w temacie, mam problem z tym, że char* zmienia wartość. Konkretnie chodzi o card.colour. W kodzie wypisałem sobie tę zmienną coutem, żeby sprawdzić, kiedy występuje problem. Jak widać, dwa razy wykonuje się on dobrze, błąd następuje dopiero gdy pętla ponownie się wykonuje (mimo, że if wykonuje się tylko raz, sprawdzałem). Co ciekawe, z card.number nie ma tego problemu. Myślę, że taka zmiana wynika z natury wskaźników, ale nie mam pomysł jak taki napis przetrzymać jako niezmieniony. Jakieś pomysły?