История изменений
Исправление linuhs_user, (текущая версия) :
грят sprintf() медленнее чем memcpy()
Зато код короче, ты же не прошивку ракеты пишешь.
$ gcc main.c
$ time ./a.out memcpy
REPEAT: 65536
real 0m1,493s
user 0m0,046s
sys 0m0,251s
$ time ./a.out sprintf
REPEAT: 65536
real 0m1,508s
user 0m0,068s
sys 0m0,251s
если через массив делать, то никогда не знаешь какой длины будет путь
Так на него ограничение есть, ты все равно большой путь заюзать не сможешь, смысл в большом массиве?
#include <linux/limits.h>
char current_path[PATH_MAX];
а так ты всегда выделяешь под необходимое количество символов размер.
char* str = ...;
char* buff;
int buff_size;
buff_size = snprintf(NULL, 0, "%s%s", str, "hello");
buff = malloc(buff_size + 1);
sprintf(buff, "%s%s", str, "hello");
Исходная версия linuhs_user, :
грят sprintf() медленнее чем memcpy()
Зато код короче, ты же не прошивку ракеты пишешь.
$ gcc main.c
$ time ./a.out memcpy
REPEAT: 65536
real 0m1,493s
user 0m0,046s
sys 0m0,251s
$ time ./a.out sprintf
REPEAT: 65536
real 0m1,508s
user 0m0,068s
sys 0m0,251s
если через массив делать, то никогда не знаешь какой длины будет путь
Так на него ограничение есть:
#include <linux/limits.h>
char current_path[PATH_MAX];
а так ты всегда выделяешь под необходимое количество символов размер.
char* str = ...;
char* buff;
int buff_size;
buff_size = snprintf(NULL, 0, "%s%s", str, "hello");
buff = malloc(buff_size + 1);
sprintf(buff, "%s%s", str, "hello");