Есть ли в C инструменты для добавления строк?
Я делаю функцию, которая возвращает производную функции, которая представлена в виде дерева, как
/ + \
* ^
/ \ / \
x 5 3.14 x
с узлами формы
typedef struct node
{
char * fx; // function
struct node * gx; // left-hand side
char * op; // operator
struct node * hx; // right-hand side
} node;
Если узел не имеет дочерних элементов, напримерx
, 5
, 3.14
в приведенном выше примере, то егоop
, gx
а такжеhx
являютсяNULL
и в противном случае егоfx
являетсяNULL
.
Моя функция для вычисления производной выглядит так
char * deriveFromTree ( node * rt )
{
char * buff = malloc(100*sizeof(char));
int curBuffIdx = 0;
if (rt->op) // if rt is of the form rt = gx op hx
{
char * dgdx = deriveFromTree(rt->gx); // g'(x)
char * dhdx = deriveFromTree(rt->hx); // h'(x)
char thisop = *rt->op;
if (thisop == '+' || thisop == '-')
{
// ... want to do equivalent of
// buff = dgdx + thisop + dhdx
}
else if (thisop == '*')
{
// ...
}
else if (thisop == '/')
{
// ...
}
else if (thisop == '^')
{
// ...
}
}
else // rt is a base expression -- x or a constant
{
buff[curBuffIdx] = strcmp(rt->fx, 'x') ? '1': '0';
}
buff[++curBuffIdx] = '\0';
return buff;
}
но я запутался во всем добавлении строки. Я мог бы создать с нуля строку сумматор, если уже есть компактный способ сделать
// ... want to do equivalent of
// buff = dgdx + thisop + dhdx
тогда я хотел бы использовать этот инструмент.