Я создаю дерево каталогов.C: как вернуть tree_node в функцию?
Я пытаюсь реплицировать команду 'cd' оболочки, чтобы войти в каталог.
Как вернуть tree_node cwd после создания cwd его подкаталога?
(УХО = текущий рабочий каталог, подкаталог = подкаталог), например:
УХО = subDir-> дерево;
return cwd; (Как я вернусь УХО без ошибок?)
// *checks whether cwd has a subdirectory named arg
// *if yes, the function returns the corresponding tree node (and become new working directory)
// *if no, prints an error message
// *handle cd and cd ..
struct tree_node *do_cd(struct tree_node *cwd, struct tree_node *root, char *arg) {
// checks if directory exists
struct list_node *subDir = cwd -> first_child;
while (subDir != NULL) {
if (strcmp(subDir->tree->string_buffer, arg) == 0) {
printf("Entering directory with name %s \n", arg);
subDir->tree = cwd;
return cwd;
printf("Directory with name %sentered.\n", arg);
}
subDir = subDir->next;
}
printf("Directory does not exist!\n");
}
Вы сказали, что если (...), то верните cwd, а как насчет других условий? компилятор дает ошибку, потому что не все пути возвращаются – Pooya
Что вы подразумеваете под «как мне вернуть cwd без ошибок»? Вы имеете в виду ошибки сборки? Какие ошибки сборки? Ошибки во время выполнения? Что и где? И почему бы не вернуть 'NULL', если вы не смените каталог? Вы должны *** возвращать что-то во всех путях функции, иначе вы будете использовать * неопределенное поведение * при использовании возвращаемого указателя. Кроме того, вы знаете, что 'return' немедленно возвращает функцию return *, без операторов после ее выполнения. –
Где я должен вернуть NULL? После printf («Каталог не существует! \ N») ;? – MsSingularity