strcat()
, как и все функции работы со строками из стандартной библиотеки, неэффективны. это связано с тем, что строки хранятся в C, а именно с нулевым символом в конце, поэтому каждая функция должна найти конец строки, перебирая каждый символ.
в любом случае, вы делаете преждевременную оптимизацию: несколько вызовов strcat () здесь будут выполняться очень быстро по сравнению с выполнением команды, поэтому вам не нужно беспокоиться об эффективности вашего способа объединения.
прежде чем оптимизировать часть кода, вы должны показать, что это узкое место и что оптимизация действительно улучшит время выполнения. в большинстве случаев оптимизировать не нужно: это просто не стоит потраченного времени.