What is the most efficient way to prepend to a C string, using as little memory as possible?
I am trying to reconstruct the path to a file in a large directory tree.
Here’s an idea of what I was doing before:
char temp[LENGTH], file[LENGTH];
file = some_file_name;
while (some_condition) {
parent_dir = some_calculation_that_yields_name_of_parent_dir;
sprintf(temp, "%s/%s", parent_dir, file);
strcpy(file, temp);
}
This seems a bit clunky though.
Any help would be appreciated. Thanks!
Copying can hardly be avoided if you want it in the same memory chunk. If the allocated chunk is large enough you could use
memmoveto shift the original string by the length of what you want to prepend and then copy that one into the beginning, but I doubt this is less “clunky”. It would however save you extra memory (again, granted that the original chunk has enough free space for them both).Something like this: