[英]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.