首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C-使用chdir()函数

C-使用chdir()函数
EN

Stack Overflow用户
提问于 2013-05-05 01:12:31
回答 2查看 19.7K关注 0票数 1

我正在尝试使用chdir()函数,但是不能解决它。

我正在阅读用户,看看他是否在使用"cd“。我总是得到一个错误。我做错了什么?

代码:

代码语言:javascript
复制
    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:");
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-05 01:19:09

如果输入的行类似于:

代码语言:javascript
复制
cd xyzzy

然后目录从偏移量3开始,而不是从偏移量2开始。此外,fgets通常会给出一个在末尾带有换行符的行,因此您也需要删除它,例如:

代码语言:javascript
复制
if (strlen (line) > 0)
    if (line[strlen (line) - 1] == '\n')
        line[strlen (line) - 1] = '\0';

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

票数 5
EN

Stack Overflow用户

发布于 2013-05-05 01:16:34

"cd"后面可能有一个空格字符,所以您应该添加3而不是2。

代码语言:javascript
复制
    printf("\nGOT = %s\n",(arguments+3));
    ret = chdir ((arguments+3));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16376892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档