2013-05-04 2 views
1

chdir() 함수를 사용하려고하는데 작동하지 못합니다.C - 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:"); 
     } 
    } 
+3

... 그 오류는 정확히 무엇입니까? – paxdiablo

+0

GOT =/home 오류 : 아니요 파일이나 디렉토리가 없습니다. –

+0

입력이 끝나면 줄 바꿈이됩니다. 내 대답을 참조하십시오. – paxdiablo

답변

4

를 추가해야는 뭔가 같은 :

cd xyzzy 

디렉토리는 오프셋 2에서가 아니라 오프셋 3에서 시작됩니다. 또한 fgets usu 당신은 아마 조금 더 지능적으로 입력을 tokenising해야

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

, bash 같은 쉘 (: 당신은 같은뿐만 아니라, 그것을 제거 할 수 있습니다, 그래서 동맹은 당신에게 마지막에 줄 바꿈 문자가있는 줄을 제공합니다 예를 들어)에는 다소 복잡한 규칙이 있습니다.

+0

감사 : :) –

1

"cd" 뒤에 공백 문자는 아마도, 그래서 라인이 입력되는 경우 3하지 2.

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

그래 나는 점점없는거야 것을 시도 \ 0 '; –