Я предполагаю, что у вас есть какой-то список, указывающий, где каждый из строка начинается и заканчивается:
struct Node {
int startOffset;
int size; // includes trailing zero;
// (not really needed: can search for it with strlength)
};
и вы хотите, чтобы написать функцию, которая, учитывая vector<Node>
вышеперечисленное и массив символов с строками (назовем его chars
), перемешивает строки вокруг так, что для i-й узел, nodes[i].startOffset + nodes[i].size == nodes[i+1].startOffset
Вы можете сделать следующее (предполагается, что 0th узел находится в startOffset
0, и что вектор узла заказана startOffset
):
Node prev = nodes[0];
for (int i = 1; i<nodes.length(); i++) {
Node n = nodes[i];
int targetOffset = prev.startOffset + prev.size;
memmove(chars + targetOffset, chars + n.startOffset, n.size);
n.startOffset = targetOffset;
prev = n;
}
Почему не просто скопировать текстовый вывод здесь? Вам не нужно размещать изображения –
Используйте 'strcat()' или 'strncat()' – Bregalad
Поскольку OP хочет сохранить '\ 0' в конце строки. – doron