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

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

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

Я, пишу морской бой для академии, в написании, нужно использовать указатели. Я столкнулся с проблемой, когда нужно передать указатель функции, на двумерный статический массив, в которой производится вывод массива на консоль. Печать происходит, но корректно только первые три строки:
http://www.imageup.ru/img260/1072072/print.gif
Я, в main() создаю указатель, на адрес массива map возвращаемого функцией map(), в которой просто двумерный массив map инициализируется схемой поля боя, далее из main() адрес массива map, передается функции show() которая и выводит массив map на экран:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5. #define s 13
  6. #define c 28
  7. void show(char (*pmap)[c])
  8. {
  9. int i,j;
  10.  
  11. for(i=0; i<s; ++i)
  12. {
  13. for(j=0; j<c; ++j)
  14. {
  15. printf("%c",pmap[i][j]);
  16. }
  17. printf("\n");
  18. }
  19. }
  20. int map ()
  21. {
  22. char map[s][c]=
  23. {
  24. " 0123456789 0123456789 ",
  25. " ---------- ---------- ",
  26. "0| | 0| |",
  27. "1| | 1| |",
  28. "2| | 2| |",
  29. "3| | 3| |",
  30. "4| | 4| |",
  31. "5| | 5| |",
  32. "6| | 6| |",
  33. "7| | 7| |",
  34. "8| | 8| |",
  35. "9| | 9| |",
  36. " ---------- ---------- ",
  37. };
  38. return map;
  39. }
  40. int main()
  41. {
  42. char*pmap=map();
  43. show(pmap);
  44. return 0;
  45. }
Но, если не передавать адрес массива map в main(), а передать его из функции map() сразу в show() печатается так, как надо:
http://www.imageup.ru/img260/1072080/print2.gif
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5. #define s 13
  6. #define c 28
  7. void show(char (*pmap)[c])
  8. {
  9. int i,j;
  10.  
  11. for(i=0; i<s; ++i)
  12. {
  13. for(j=0; j<c; ++j)
  14. {
  15. printf("%c",pmap[i][j]);
  16. }
  17. printf("\n");
  18. }
  19. }
  20. int map ()
  21. {
  22. char map[s][c]=
  23. {
  24. " 0123456789 0123456789 ",
  25. " ---------- ---------- ",
  26. "0| | 0| |",
  27. "1| | 1| |",
  28. "2| | 2| |",
  29. "3| | 3| |",
  30. "4| | 4| |",
  31. "5| | 5| |",
  32. "6| | 6| |",
  33. "7| | 7| |",
  34. "8| | 8| |",
  35. "9| | 9| |",
  36. " ---------- ---------- ",
  37. };
  38. char*pmap=map;
  39. show(pmap);//передаем pmap в show() минуя main()
  40. }
  41. int main()
  42. {
  43. map();
  44. return 0;
  45. }
p.s. извиняюсь за некорректное название темы.

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

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

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


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

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы