Нужно повернуть двумерный массив из функции - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д