簡體   English   中英

C —使用chdir()函數

[英]C — using chdir() function

我正在嘗試使用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具有相當復雜的規則。

"cd"后面可能有一個空格字符,因此您應該添加3而不是2。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM