我正在尝试使用chdir()函数,但是不能解决它。
我正在阅读用户,看看他是否在使用"cd“。我总是得到一个错误。我做错了什么?
代码:
int * status=0;
char * buf = 0;
char arguments[2048];
buf = getcwd(buf,PATH_MAX);
printf("%s >",buf);
fgets(arguments,2048,stdin);
if( strncmp(arguments,"quit",4)==0 ){
printf("Exit...\n");
break;
}
else if(strncmp(arguments,"cd",2)==0 ){
int ret;
printf("\nGOT = %s\n",(arguments+2));
ret = chdir ((arguments+2));
if(ret!=0){
perror("Error:");
}
}发布于 2013-05-05 01:19:09
如果输入的行类似于:
cd xyzzy然后目录从偏移量3开始,而不是从偏移量2开始。此外,fgets通常会给出一个在末尾带有换行符的行,因此您也需要删除它,例如:
if (strlen (line) > 0)
if (line[strlen (line) - 1] == '\n')
line[strlen (line) - 1] = '\0';您可能应该更智能地对输入进行标记化,像bash这样的shell (例如)有相当复杂的规则。
发布于 2013-05-05 01:16:34
"cd"后面可能有一个空格字符,所以您应该添加3而不是2。
printf("\nGOT = %s\n",(arguments+3));
ret = chdir ((arguments+3));https://stackoverflow.com/questions/16376892
复制相似问题