Funcao Split em C?

Tenho aqui um ficheiro no seguinte formato:

ficheiro.txt

1 ; Familiar ; 2 ; 2 ; I 3 , M 3 , BR 4 , AL 2
2 ; Individual ; 1 ; I 2 , M 2
3 ; Familiar ; 1 ; 0 ; AB 2 , AM 3 , AL 5 , BR 2
4 ; Individual ; 0 ; AL 3 , BR 2

eu tenho de ler e dividir por “;” e guardar cada um em uma variavel, em java usaria a funcao split, que transforma cada dado lido separado pelo caracter indicado em vector. como eu faço isso em c, tem como eu programar a funcao split em c?

Dá uma olhada na função strtok

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "primeiro,segundo,terceiro,quarto,quinto,,,,,,";
    char* temp = 0;
    char** result = 0;
    unsigned int tamanho = 0;

    temp = strtok(str, ",");
    
    if (temp) {
        result = malloc( (tamanho + 1) * sizeof(char**));
        result[tamanho++] = temp;
    }

    while ( (temp = strtok(0, ",")) != 0 ) {
        result = realloc(result, (tamanho + 1) * sizeof(char**));
        result[tamanho++] = temp;
    }

    for (int i = 0; i < tamanho; i++)
        printf("%d - %s\n", i, result[i]);

    if (tamanho > 0)
        free(result);
}