2012-02-26 3 views
1

처음으로 포스터. 누군가가 나를 도와 줄 수 있기를 바랬습니다. 5.10 절에서, Kernighan은 텍스트 행에 문자열을 재 인쇄하는 프로그램의 예제를 제공합니다. 그래서 이것을 내 폴더에 "찾기"로 저장 한 다음 cmd, 폴더로 이동 한 다음 "-x 뭐든"을 입력하십시오. 그러나 어떤 이유로 '-'는 등록하지 않고 "-x 뭐든간에"하나의 긴 문자열로 취급합니다. 누군가 이런 일이 일어나는 이유를 알 수 있습니까? 감사. 올바른 매개 변수 형식하지 :Kernighan/Ritchie의 섹션 5.10 명령 줄 인수/선택적 매개 변수

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define MAXLINE 1000 

int getline(char *s, int lim) 
{ 
int i = 0; 

while(i < lim - 1 && (*s = getchar()) != EOF && *s++ != '\n') 
    i++; 

if(*s == '\n') 
    *s++ = '\n', i++; 

*s = '\0'; 
return i; 
} 
int main(int argc, char *argv[]) 
{ 

char line[MAXLINE]; 
long lineno = 0; 
int c, except = 0, number = 0, found = 0; 

while(--argc > 0 && (*++argv)[0] == '-') 
    while(c = *++argv[0]) 
     switch(c) { 
     case 'x': 
       except = 1; 
       break; 
     case 'n': 
       number = 1; 
       break; 
     default: 
       printf("find: illegal option %c\n", c); 
       argc = 0; 
       found = -1; 
       break; 
     } 

if(argc != 1) 
    printf("Usage: find -x -n pattern\n"); 
else 
    while(getline(line, MAXLINE) > 0) { 
     lineno++; 
     if((strstr(line, *argv) != NULL) != except) { 
       if(number) 
        printf("%ld:", lineno); 
       printf("%s", line); 
       found++; 
     } 
    } 

printf("Found: %d", found); 
return found; 
} 

답변

3

당신은 내가 입력하면 그것을 찾기 말한다 whatever``-x 찾을

find -x whatever 

대신

find "-x whatever" 
+0

의 입력해야합니다. 입력하면 'find -x "무엇이든" 파일을 찾을 수 없음 - -X –

+0

"find"가 아닌 프로그램을 호출 해보십시오. 이미 실수로 호출하는 명령을 찾을 수 있습니다. – Sean

+0

Lol. 내가 한 일은 내가 프로그램을 만들지 않았고 "찾기"가 오래된 명령이었다고 생각한다. 하하. 고마워요. –