Witam,
Otóż mam dziwny problem, potrzebuję wygenerować załóżmy 1000 słów i je gdzieś przechować. Brzmi banalnie, ale mam pewien problem. Jest funkcja zwracająca adres tablicy z wygenerowanym słowem:
char* generate_word()
{
char tab[max_word+1];
int n, i = 0;
n=rand()%(max_word-min_word+1)+min_word;
for(i; i<n; i++) tab[i] = rand()%26+65;
tab[i] = '\0';
return tab;
}
Więc tworze tablicę wskaźników - 1000 elementową:
#include "functions.h"
#include "variables.h"
#include <time.h>
using namespace std;
int main()
{
srand(time(NULL));
char* words[size];
for(int i=0; i<size; i++) words[i]=generate_word();
for(int i=0; i<size; i++) cout << words[i] << "\n";
system("pause");
return 0;
}
Niestety, wszystkie słowa są takie same, jednak adresy na jakie pokazują wskaźniki są różne...
Dodam, że dla:
for(int i=0; i<size; i++) cout << generate_word() << "\n";
Wszystko działa, wyświetlają się różne słowa, oraz dla:
words[0] = generate_word();
cout << words[0] << "\n";
words[1] = generate_word();
cout << words[1] << "\n";
Również jest OK, jednak dla:
words[0] = generate_word();
words[1] = generate_word();
cout << words[0] << "\n";
cout << words[1] << "\n";
Już działać nie chce, i wyświetlają się znów te same wyrazy.
Dodaję jeszcze wartości stałych:
const int size = 1000,
min_word = 4,
max_word = 15;
Dziwny problem, jeśli ktoś pomoże będę bardzo wdzięczny.