Я хочу, чтобы вставить переменную строку в заранее определенную строку .... вот это упрощенная версию того, что я до сих пор (я пропущенные проверки ошибок и т.д.):C ... лучший способ вставки в строку?
void insertPath(char *path)
{
char *cmd;
cmd = (char *)malloc(50);
strcpy(cmd, "CREATE VIRTUAL TABLE temp.tablename USING CSVFILE(");
int new_size = (strlen(cmd) + strlen(path) + 2);
cmd = (char *)realloc(cmd, new_size);
strcat(cmd, path);
strcat(cmd, ");");
// Do other stuff here and finally free(cmd);
}
Есть ли лучше способ сделать это?
Было бы неплохо не использовать malloc
realloc
, но я не хочу создавать экземпляр переменной cmd
с фиксированной длиной.
(Первоначально я думал, что я мог бы сделать это, то realloc..ie char cmd[50] = "CREATE... "
или char *cmd = "CREATE..."
, но realloc
работает только на переменных, которые были ранее malloc
«d)
Единственный способ, которым я могу думать (и я не уверен, что это работает) будет:
void insertPath(char *path)
{
char *cmd;
cmd = (char *)malloc(55);
strcpy(cmd, "CREATE VIRTUAL TABLE temp.tablename USING CSVFILE(%s);");
int new_size = (strlen(cmd) + strlen(path));
cmd = (char *)realloc(cmd, new_size);
sprintf(cmd, path);
// Do other stuff here and finally free(cmd);
}
«Было бы хорошо, чтобы не использовать таНос перераспределить». Инкапсулируйте их. –
Как вы можете думать, что делать? И в общем, каков ваш вопрос? –
Мой вопрос прямо там ... «Есть ли лучший способ сделать это?». Я дал две попытки вставить неизвестную строку в известную. Я спрашиваю, какой из них (или третий я не знаю) - лучший способ – jramm