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);
}
}
}
quando avvio e digito "cd test" non ottengo "nessun file o directory". Ma c'è la directory "test".chdir() - nessun file o directory
Esegui su Arch Linux.
Controlla la stringa 'directory' in questo modo:' printf ("directory = [% s] \ n", directory); 'nel caso in cui ci sia un linefeed o altri caratteri indesiderati/invisibili nel nome. –
'char change [2] =" cd "' assegna una matrice di dimensione 3 ad una variabile che è di dimensione 2. Usa 'char change [] =" cd "' invece. –
@ WilliamPursell- In realtà, sta usando 'strncmp (... 2)', quindi è legale, anche se la tua è comunque una buona pratica. – rodrigo