Вы выбрали неправильный язык для работы со строками!
Простой и традиционный выход - сделать что-то вроде:
#define MAX_PATH 260
char pathToFile[MAX_PATH+1] = "/home/frankv/";
strcat(pathToFile, "wibble/");
Конечно, это подвержено ошибкам - если результирующая строка превышает символы MAX_PATH, может произойти все что угодно, и именно этот вид программирования используется многими троянами и червями для проникновения в систему безопасности (путем повреждения памяти в тщательно определенной путь). Следовательно, мой преднамеренный выбор 260 для MAX_PATH, который был в Windows - вы все равно можете заставить Проводник Windows делать странные вещи с вашими файлами с путями более 260 символов, возможно из-за кода, подобного этому!
strncat может оказаться небольшой подсказкой - вы можете, по крайней мере, указать ему максимальный размер места назначения, и он не будет копировать дальше.
Чтобы сделать это надежно, вам нужна библиотека строк, которая правильно делает строки переменной длины. Но я не знаю, есть ли такая вещь для C (C ++, конечно, другое дело).