Вы можете сохранить строку, начиная с конца. Поскольку вы, кажется, уже знаете maxSize ...
Так что, в принципе, если файл изначально был (foo.txt)
[] [] [] [] [] [f] [o] [o] [.] [t] [x] [t] [\0]
^
|
lastEmpty
Теперь, если вы добавите родительский каталог /, он будет выглядеть как
[] [] [] [a] [/] [f] [o] [o] [.] [t] [x] [t] [\0]
^
|
lastEmpty
Таким образом, код будет выглядеть примерно так (могут быть ошибки, но вы поняли).
char temp[LENGTH], file[LENGTH];
int lastEmpty = put_at_end(some_file_name, file);
// lastEmpty points to right most empty slot
while (some_condition) {
parent_dir = some_calculation_that_yields_name_of_parent_dir;
int len = strlen(parent_dir);
char *tmp = parent_dir + len -1;
while (lastEmpty > 0) {
file[lastEmpty] = *tmp;
lastEmpty --;
tmp--;
}
}
Так как я предполагаю, что мы можем ожидать, что parent_dir будет маленьким, повторить его дважды будет нормально Если вы хотите передать строку файла, вы можете просто использовать file+lastEmpty+1
.