> strcpy(mempcpy(mempcpy(r, f, a + 1), i, b), e);Из контекста не вырывайте, пожалуйста. Конечно, в этом случае значительно читабельнее было бы что-то типа
strcpy(mempcpy(mempcpy(function_result, file_name, character_before_last_slash_index_in_file_name + 1), new_file_name, last_slash_index_in_new_file_name), file_extension);
или
char *function_result_directory_path_end = mempcpy(function_result, file_name, last_slash_index_in_file_name + 1);
char *function_result_directory_and_basename_path_end = mempcpy(function_result_directory_path_end, new_file_name, last_slash_index_in_new_file_name);
strcpy(function_result_directory_and_basename_path_end, file_extension);
а ещё лучше
char *function_result_directory_path_end = copy_memory_slice_and_return_pointer_to_the_end(function_result, file_name, last_slash_index_in_file_name + 1);
char *function_result_directory_and_basename_path_end = copy_memory_slice_and_return_pointer_to_the_end(function_result_directory_path_end, new_file_name, last_slash_index_in_new_file_name);
copy_string_to(function_result_directory_and_basename_path_end, file_extension);
но это вам в яву.
Не могу сказать без просмотра всей функции, но наверняка у каждой переменной есть смысл, очевидный, если смотреть всю функцию в целом. Например, r - result, f - filename, e - extension, и т.д. И лично мне удобнее прочитать этот однострочник, чем то, чем его пытаются обычно заменить (см. выше).