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

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

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

в данном случае проблема выглядит следующим образом:
main(void)
{
   char *map, *moves;
   readFile(map, moves);
}
 
readFile(char *map, char *moves)
{
   map = (char*)malloc(over9000);
   moves = ... //тоже самое, что и выше
   //перед передачей в функцию по этим указателям находился мусор
   //после маллоков в map и moves по прежнему тот же мусор..как с этим бороться? 
}

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

textual
Листинг программы
main(void)
{
int w,h;
char *map;
readFile(&map, &w, &h);
}
 
void readFile(char **map, int* w, int *h)
{
int i = 0;
*w = 5; // разименовываем
*h = 5; // разименовываем
*map = (char*)malloc( *w * *h );  // разименовываем
char ch;
while ((ch = fgetc(input))!=EOF)
{
(*map)[i] = ch; // указываем приоритет
if (i < *w * *h) ++i;  // разименовываем
else goto err;
}
}

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

  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
Похожие ответы