Нужно повернуть двумерный массив из функции - C (СИ)
Формулировка задачи:
Как правильно возвратить двумерный массив из функции? Перед компиляцией вылетает следующая ошибка:
cannot convert `int (*)[2]' to `int**' in return
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <time.h>
int** ReadPointsFromFile(char *filename)
{
const int len = 10;
int i,j,k,n;
char temp[len], temp2[len];
FILE *f = fopen(filename, "r");
if(f == NULL)
{
puts("Невозможно открыть файл!");
getch();
exit(1);
}
for(n=0; !feof(f); n++)
{
fgets(temp, 1, f);
}
int points[n][2];
fseek(f,0,SEEK_SET);
for(j=0; !feof(f) && j<n; j++)
{
fgets(temp, len, f);
for(i=0; temp[i]!=','; i++)
temp2[i] = temp[i];
temp2[i] = '\0';
points[j][0] = atoi(temp2);
for(k=0, i++; temp[i]!='\0'; i++, k++)
temp2[k] = temp[i];
points[j][1] = atoi(temp2);
}
fclose(f);
return points;
}
int main()
{
int **points; //массив точек, где [n][0] - координата x; [n][1] - координата y
points = ReadPointsFromFile("in.txt");
//Что-то далее делаем с двумерным массивом...
//
getch(); //ждем реакции пользователя
}Решение задачи: «Нужно повернуть двумерный массив из функции»
textual
Листинг программы
int points[n][2]; /* n - переменная, а не константа */
Объяснение кода листинга программы
- Объявляется двумерный массив
pointsтипаintс размеромnна 2. - Переменная
nне является константой, она может изменяться в процессе выполнения программы. - Каждый элемент массива
pointsимеет типintи содержит два значения, которые могут быть использованы в качестве координат (x, y) в двумерном пространстве. - В каждой строке массива
pointsпервое значение представляет собой x-координату, а второе значение - y-координату. - Массив
pointsможет содержать любое количество элементов, в зависимости от значения переменнойn.