int main(int argc, char **argv)
{
char input[150];
char change[2] = "cd";
char *directory;
while(1) {
prompt();
fgets(input, 150, stdin);
if(strncmp(change, input, 2) == 0) {
directory = strtok(input, " ");
directory = strtok(NULL, " ");
printf(directory);
chdir(directory);
perror(directory);
}
if(feof(stdin) != 0 || input == NULL) {
printf("Auf Bald!\n");
exit(3);
}
}
}
когда я запускаю это и набираю «cd test», я получаю «нет такого файла или каталога». Зато есть каталог "тест".
Работает на Arch Linux.
directory
следующим образом:printf("directory = [%s]\n", directory);
на случай, если у вас есть случайный перевод строки или другие нежелательные/невидимые символы в имени. - person Paul R   schedule 27.11.2012char change[2] = "cd"
присваивает массив размера 3 переменной размера 2. Вместо этого используйтеchar change[] = "cd"
. - person William Pursell   schedule 27.11.2012strncmp(...2)
, так что это законно, хотя у вас все равно хорошая практика. - person rodrigo   schedule 27.11.2012