find程序实现

一个简单的查找字符串匹配

#include <stdio.h>
#include <string.h>

#define MAXLINE 1000

int getline(char * line, int len)
{
    int c,i = 0;
    while (i<len-1 && (c = getchar()) != EOF && c != '\n') 
        line[i++] = c;
    if(c == '\n' && i<len) {
        line[i++] = '\0';
    }
    return i;
}

int main(int argc, char const *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) > 0) {
                if(number)
                    printf("%ld:",lineno);
                printf("%s\n",line);
                found++;
            }
        }
        found++;
    }

    return found;
}

posted @ 2019-10-13 20:23  wjundong  阅读(173)  评论(0编辑  收藏  举报