Я использую следующий код для перемещения дерева назад, и теперь я получаю разделитель в конце, например child/grandchild/< - Я хочу удалите этот разделитель. Я не знаю, что изменить в алгоритме для этого.Удаление разделителя пути в конце строки
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node { struct node *parent; char *name; };
char *buildPath(node* node, bool use_register_name)
{
struct node *temp = node;
int length =0;
do
{
length+=strlen(temp->name)+1; // for a slash;
temp = temp->parent;
} while(temp !=NULL);
char * buffer =malloc(length+1);
buffer[0] = '\0';
do
{
if(!use_register_name)
{
use_register_name=true;
node = node->parent;
continue;
}
char *name = strdup(node->name);
strcat(buffer,"/");
strrev(name);
strcat(buffer,name);
node = node->parent;
free(name);
} while (node != NULL &&strcmp(node->name,"root")<0);
strrev(buffer);
return buffer;
}
int main(void)
{
struct node node1 = { NULL, "root" };
struct node node2 = { &node1, "child" };
struct node node3 = { &node2, "grandchild" };
char * result = buildPath(&node3, false);
printf(result);
return EXIT_SUCCESS;
}
он меняет имя строки, и я использую это имя в strcat – andre
рассмотрен вопрос здесь 'strrev (буфер);' вы должны удалить слэш после команды Tthis – Abra001
, как сказал @ Тим, замените 'strrev (buffer);' by 'strrev (buffer); buffer [strlen (buffer) - 1] = 0;' – Abra001