Указатели Char, передача адреса в функцию - C (СИ)

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

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

в данном случае проблема выглядит следующим образом:
Листинг программы
  1. main(void)
  2. {
  3. char *map, *moves;
  4. readFile(map, moves);
  5. }
  6. readFile(char *map, char *moves)
  7. {
  8. map = (char*)malloc(over9000);
  9. moves = ... //тоже самое, что и выше
  10. //перед передачей в функцию по этим указателям находился мусор
  11. //после маллоков в map и moves по прежнему тот же мусор..как с этим бороться?
  12. }

Решение задачи: «Указатели Char, передача адреса в функцию»

textual
Листинг программы
  1. main(void)
  2. {
  3. int w,h;
  4. char *map;
  5. readFile(&map, &w, &h);
  6. }
  7.  
  8. void readFile(char **map, int* w, int *h)
  9. {
  10. int i = 0;
  11. *w = 5; // разименовываем
  12. *h = 5; // разименовываем
  13. *map = (char*)malloc( *w * *h );  // разименовываем
  14. char ch;
  15. while ((ch = fgetc(input))!=EOF)
  16. {
  17. (*map)[i] = ch; // указываем приоритет
  18. if (i < *w * *h) ++i;  // разименовываем
  19. else goto err;
  20. }
  21. }

Объяснение кода листинга программы

  1. В функции main() объявлены три переменные: w, h и map.
  2. Переменная w и h инициализируются значением 5.
  3. Переменная map инициализируется как указатель на char.
  4. Функция readFile() вызывается с аргументами &map, &w, &h.
  5. В функции readFile() происходит следующее:
  6. Переменная i инициализируется значением 0.
  7. Значения переменных w и h приводятся к типу int, используя оператор разименования (*).
  8. Выделяется память под массив символов с помощью функции malloc().
  9. Переменная map приводится к типу char*, используя оператор разименования (()).
  10. Переменная ch инициализируется значением, возвращаемым функцией fgetc().
  11. Значение переменной ch присваивается элементу массива map[i].
  12. Если i меньше значения w*h, то значение i увеличивается на 1.
  13. Если i равно значению w*h, то выполняется переход к метке err.
  14. Значение переменной i не увеличивается, если i равно значению w*h.
  15. Значение переменной i не увеличивается, если i равно значению w*h-1.

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


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

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

8   голосов , оценка 3.875 из 5

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

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

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