2012-02-26 140 views
1

第一次張貼海報。希望有人能幫助我。在5.10節中,Kernighan給出了一個程序示例,該程序重新打印其中包含字符串的文本行。所以我將它保存爲我的文件夾中的「find」,然後進入cmd,然後輸入文件夾,然後鍵入find「-x whatever」。然而由於某些原因,' - '沒有註冊,它只是將「-x whatever」視爲一個長字符串。任何人有任何線索爲什麼發生這種情況?謝謝。來自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

你必須鍵入

find -x whatever 

代替

find "-x whatever" 
+0

,當我在 鍵入'找到-x whatever' 它說FIND:參數格式不正確。如果鍵入 '找到-x「無所謂」' 它說找不到文件 - -X – 2012-02-27 01:05:09

+0

你可以嘗試調用比「找到」其他程序的東西。已經有一個你可能錯誤地調用的find命令。 – Sean 2012-02-27 03:07:43

+0

哈哈。我想我所做的是我沒有構建這個程序,而「發現」是舊命令。哈哈。非常感謝你們。 – 2012-02-27 03:30:34