Для того что бы написать нормальный ft_printf нужно понимать структуры. Будем разбираться на понятных примерах.

Представим что мы хотим для чего нибудь хранить следующие данные:

Реализуем все это через переменные (пример специально пишу не по норме):

#include <stdio.h>

int	main(void)
{
    char    *imac = "mi-k5";
    char    *claster = "mirage";
    int     floor = 2;

    printf("iMac: %s\\nКластер: %s\\nЭтаж: %d", imac, claster, floor);
    return (0);
}

Добавь запись ещё о двух компьютерах по той же схеме:

#include <stdio.h>

int	main(void)
{
    char    *imac_1 = "mi-k5";
    char    *claster_1 = "mirage";
    int     floor_1 = 2;

    char    *imac_2 = "mi-t3";
    char    *claster_2 = "mirage";
    int     floor_2 = 2;

    char    *imac_3 = "am-d3";
    char    *claster_3 = "atrium";
    int     floor_3 = 2;

    printf("iMac: %s\\nКластер: %s\\nЭтаж: %d\\n\\n", imac_1, claster_1, floor_1);
    printf("iMac: %s\\nКластер: %s\\nЭтаж: %d\\n\\n", imac_2, claster_2, floor_2);
    printf("iMac: %s\\nКластер: %s\\nЭтаж: %d\\n\\n", imac_3, claster_3, floor_3);
    return (0);
}

Мне пришлось добавить индексы к переменным, да и вообще получилось как то громоздко.

Теперь реализуем хранение и вывод этих данных с помощью структур. Структура будет в заголовочном файле и называться маки в школе

#ifndef FT_PRINTF_FT_PRINTF_H
#define FT_PRINTF_FT_PRINTF_H

struct mac_in_school
{
    char * imac;
    char * claster;
    int floor;
};

Эта структура как раз описывает порядок и тип данных которые мы записывали через переменные.

В данном случае mac_in_school это имя структуры, которое мы будем использовать для вызова структуры что бы в неё записывать данные.

Если мы сравниваем структуру с переменной, то struct mac_in_school равносильна char или int