C - 使用chdir()函数

时间:2013-05-04 17:12:31

标签: c linux cmd console chdir

我正在尝试使用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:");
        }
    }

2 个答案:

答案 0 :(得分:4)

如果输入的行是:

cd xyzzy

然后目录从偏移量3开始,而不是2.另外,fgets通常会在最后给你一行换行符,所以你也想删除它,例如:

if (strlen (line) > 0)
    if (line[strlen (line) - 1] == '\n')
        line[strlen (line) - 1] = '\0';

你可能应该更加智能地对输入进行标记,像bash这样的shell(例如)具有相当复杂的规则。

答案 1 :(得分:1)

"cd"之后可能存在空格字符,因此您应该添加3而不是2。

    printf("\nGOT = %s\n",(arguments+3));
    ret = chdir ((arguments+3));