-1
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<string.h>
int main()
{
char temporaryPath[50];
fgets(temporaryPath, sizeof(temporaryPath), stdin);
if(chdir(temporaryPath) == -1)
printf("Failed to change directory\n");
getcwd(temporaryPath, 1000);
printf("%s> ", temporaryPath);
}
Я искал много о смене директории, но я не мог понять, почему Chdir() терпит неудачу в этом случае. Если я использую fgets() вместо жесткого кодирования массива временного массива, chdir() не может сменить каталог. Почему это и что можно сделать, чтобы исправить это?ChDir() не изменяет каталог, если используется с fgets()
Большое спасибо :)
'fgets' будет включать завершающую * перевод строки * (если таковые имеются) на входе, это, скорее всего, что является причиной вашей ошибки. –
@ FilipRoséen-refp благодарим за ответ. Оно работало завораживающе. Хотя я тестировал его с помощью цикла, и его использование в коде действительно повлияет на производительность, и использование метода Влада имеет такой недостаток, как вы только что сказали. – Tehmas
Прочитайте строку с помощью 'fgets', разделите конечную новую строку (** если ** там есть), продолжайте делать то, что вы хотели бы сделать. –