Затруднение с рандомом в динамическом массивом

Написал функцию, которая необходима для реализации динамического двухмерного массива с рандомным значением элементов. Однако компиллятор возвращает меня на место: error C2109: для индекса требуется массив или указатель (в строках, где тело вложенного цикла с rand(). Помогите, пожалуйста, с этой небольшой..как я думаю, проблемой.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream>

using namespace std;

int *get_matrix_rand(int size, int size2)
{
    int i, j;
    int* a = (int*)malloc(size * size2 * sizeof(int));

    for (i = 0; i < size; i++)  // цикл по строкам
    {
        for (j = 0; j < size2; j++)  // цикл по столбцам
        {
            a[i][j] = rand() % 100;
            printf("a[%i][%j] = %d ", i, j, a[i][j]);
            printf("\n");
        }
    }
    return a;
}

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

Автор решения: Harry
int **get_matrix_rand(int size, int size2)
{
    int** a = malloc(size*sizeof(int*));
    for(int i = 0; i<size; i++)
    {
        a[i] = malloc(size2*sizeof(int));
        for(int j = 0; j<size2; j++)  // ???? ?? ????????
        {
            a[i][j] = rand() % 100;
            printf("a[%d][%d] = %d\n", i, j, a[i][j]);
        }
    }
    return a;
}

Только еще: если у вас С - то о каком

#include <fstream>
using namespace std;

вы говорите?! И - в С (подчеркиваю: в С, не С++) вот это приведение int*

(int*)malloc

не требуется.

И - потом не забудьте освободить память в обратном порядке. Сначала все a[i], потом a.

→ Ссылка