C — 使用 chdir() 函数

标签 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:");
        }
    }

最佳答案

如果输入的行是这样的:

cd xyzzy

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

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

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

关于C — 使用 chdir() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376892/

相关文章:

c - 将 malloc 初始化为零,而不是使用 calloc

c++ - 包含来自基于 C 的代码的 C++ header (fstream)?

batch-file - 我可以获取 RFC 3339 格式的当前日期吗?

linux - 使用 cygwin 运行 "./"bash/批处理文件

c - MPI - 并行点积计算

c - C 中结构体的指针数组

linux - 备份(和恢复)一个 Plone 实例

c++ - GCC:在 "Preinitialization"时间执行代码

linux - 关于目录的写权限

java - 删除控制台文本java