Before trying to learn and use the standard library, I'd advise you to write a few simple functions yourself:
void print_until(const char* str, char c)- print every character in str until you see c or null (Note: Don't print the c or null, which should ensure that a str that only contains a \0 doesn't crash.)const char* print_until_2(const char* str, char c)- as before, but return the pointer to where you found c or nullvoid print_delimited_by(const char* str, char delimiter, char separator)- use print_until_2 in a while-loop, don't print the delimiter, but do print a separator.
For example, print_delimited_by("1;2;3",';',',') should print 1,2,3.
Finally, void num_delimited_by(const char* str, char del) - like print_delimited_by, but add a number before every output, and use newline as the separator.
These fundamental string exercises will give you a solid foundation for understanding oantby's explanations about the standard library. Note that no memory allocation is necessary.