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」と入力すると、「そのようなファイルやディレクトリはありません」と表示されます。しかし、ディレクトリ "test"があります。chdir() - そのようなファイルやディレクトリがありません
Arch Linuxで実行します。
'printf(" directory = [%s] \ n "、directory);'名前に浮遊改行や他の不要/不可視文字がある場合は、 'directory'文字列を確認してください。 –
'char change [2] =" cd "'はサイズ2の変数にサイズ3の配列を代入します。代わりに 'char change [] =" cd "'を使用してください。 –
@ WilliamPursell-実際、彼は 'strncmp(... 2)'を使用しています。だからといってあなたは良い練習です。 – rodrigo