Objective
Write str_join, which allocates one new string holding the n strings of parts separated by the byte sep, and hands that block to the caller.
Steps
$ str_join({"git", "log", "oneline"}, 3, '-')
[git-log-oneline] parts=git|log|oneline
$ str_join({"solo"}, 1, '-')
[solo] parts=solo
$ str_join(NULL, 0, '-')
[]
$ str_join({"", "b", ""}, 3, ',')
[,b,] parts=|b|
$ str_join({"one", "two", "three"}, 3, '\0')
[one.two.three] parts=one|two|three
Expected files
Allowed functions
Allowed headers

Objective
Write str_join, which allocates one new string holding the n strings of parts separated by the byte sep, and hands that block to the caller.
Steps
$ str_join({"git", "log", "oneline"}, 3, '-')
[git-log-oneline] parts=git|log|oneline
$ str_join({"solo"}, 1, '-')
[solo] parts=solo
$ str_join(NULL, 0, '-')
[]
$ str_join({"", "b", ""}, 3, ',')
[,b,] parts=|b|
$ str_join({"one", "two", "three"}, 3, '\0')
[one.two.three] parts=one|two|three
Expected files
Allowed functions
Allowed headers

Tests
Run the tests to grade your code