ファイルの行数読取り

ファイルの行数読取り例題list_35.c)
#include <stdio.h>

///////////////////////////////////////////////////////
void Usage(char* cmd);
int wc(char* ifile);
///////////////////////////////////////////////////////

int main(int argc,char* argv[])
{
    int i,n_line;
    char *cmd,*ifile;
    cmd = argv[0];
    if(argc==1) Usage(cmd);
    for(i=1;i<argc;i++) {
        if(!strcmp(argv[i], "-in")) {
            if(++i> argc) Usage(cmd);
            ifile = argv[i];
        }
        else Usage(cmd);
    }
    n_line = wc(ifile);
    printf("[%s] has %d lines\n",ifile,n_line);
    
    return 0;
}

/* Usage: */
void Usage(char* cmd)
{
    fprintf(stderr,"USAGE: %s [-in <file>]\n",cmd);
    exit(0);
}

/*----------------------------------------
  ファイルから行数の読み取り
  ----------------------------------------*/
int wc(char* ifile)
{
    FILE *fp;
    char buf[BUFSIZ];
    int n_line;
    if((fp=fopen(ifile,"r")) == NULL){
        printf("Cannot open the file\n");
        return 0;
    }
    n_line=0;
    while(fgets(buf,BUFSIZ,fp)) n_line++;
    fclose(fp);
    return n_line;
}
実行結果
Gami[301]% ./list_35.exe -in list_35.c
[list_35.c] has 50 lines
Gami[302]%
inserted by FC2 system