Передача указателя из функции в функцию двумерного массива и его вывод на экран - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Я, пишу морской бой для академии, в написании, нужно использовать указатели. Я столкнулся с проблемой, когда нужно передать указатель функции, на двумерный статический массив, в которой производится вывод массива на консоль. Печать происходит, но корректно только первые три строки:
http://www.imageup.ru/img260/1072072/print.gif
Я, в main() создаю указатель, на адрес массива map возвращаемого функцией map(), в которой просто двумерный массив map инициализируется схемой поля боя, далее из main() адрес массива map, передается функции show() которая и выводит массив map на экран:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
#define s 13
#define c 28
 
void show(char (*pmap)[c])
{
    int i,j;

    for(i=0; i<s; ++i)
    {
        for(j=0; j<c; ++j)
        {
            printf("%c",pmap[i][j]);
        }
        printf("\n");
    }
 
}
 
int map ()
{
    char map[s][c]=
    {
        "  0123456789    0123456789 ",
        "  ----------    ---------- ",
        "0|          | 0|          |",
        "1|          | 1|          |",
        "2|          | 2|          |",
        "3|          | 3|          |",
        "4|          | 4|          |",
        "5|          | 5|          |",
        "6|          | 6|          |",
        "7|          | 7|          |",
        "8|          | 8|          |",
        "9|          | 9|          |",
        "  ----------    ---------- ",
    };
 
    return map;
}
 
int main()
{
char*pmap=map();
show(pmap);
    return 0;
}
Но, если не передавать адрес массива map в main(), а передать его из функции map() сразу в show() печатается так, как надо:
http://www.imageup.ru/img260/1072080/print2.gif
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
#define s 13
#define c 28
 
void show(char (*pmap)[c])
{
    int i,j;

    for(i=0; i<s; ++i)
    {
        for(j=0; j<c; ++j)
        {
            printf("%c",pmap[i][j]);
        }
        printf("\n");
    }
 
}
 
int map ()
{
    char map[s][c]=
    {
        "  0123456789    0123456789 ",
        "  ----------    ---------- ",
        "0|          | 0|          |",
        "1|          | 1|          |",
        "2|          | 2|          |",
        "3|          | 3|          |",
        "4|          | 4|          |",
        "5|          | 5|          |",
        "6|          | 6|          |",
        "7|          | 7|          |",
        "8|          | 8|          |",
        "9|          | 9|          |",
        "  ----------    ---------- ",
    };
 
    char*pmap=map;
    show(pmap);//передаем pmap в show() минуя main()
}
 
int main()
{
map();
    return 0;
}
p.s. извиняюсь за некорректное название темы.

Решение задачи: «Передача указателя из функции в функцию двумерного массива и его вывод на экран»

textual
Листинг программы
int map ()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы