Почему в структуре генерируется одни и те же значения?

#include <iostream>
#include <time.h>
struct MyString {
    int length;
    char* string_chars;
};
void get(MyString* obj, int N);
void show(MyString* obj, int N);

int main()
{
   /* srand(time(NULL));*/
    const int N = 4;
    MyString *obj = new MyString[N];

    get(obj, N);
    show(obj, N);
}

void get(MyString* obj, int N) {

    obj->length = 10;
    obj->string_chars = new char[obj->length];
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < obj->length; j++) {
            obj->string_chars[j] = char('A' + rand() % ('Z' - 'A'));
        }
    }
}

void show(MyString* obj, int N) {
    for (int i = 0; i < N; i++) {
        std::cout << obj->length << "   ";
        for (int j = 0; j < obj->length; j++) {
            std::cout << obj->string_chars[j];
        }
        std::cout << std::endl;
    }
}

Вывод

Как можно это исправить?


Ответы (1 шт):

Автор решения: Harry

Работать со всеми элементами массива, только и всего.

void get(MyString* obj, int N) {

    for (int i = 0; i < N; i++)
    {
        obj[i].length = 10;
        obj[i].string_chars = new char[obj->length];
        for (int j = 0; j < obj[i].length; j++) {
            obj[i].string_chars[j] = char('A' + rand() % ('Z' - 'A'));
        }
    }
}

void show(MyString* obj, int N) {
    for (int i = 0; i < N; i++) {
        std::cout << obj[i].length << "   ";
        for (int j = 0; j < obj[i].length; j++) {
            std::cout << obj[i].string_chars[j];
        }
        std::cout << std::endl;
    }
}
→ Ссылка