Zliczyc linie,znaki i slowa z pliku

0

Zliczyć linie, znaki i słowa z pliku podanego jako parametr pozycyjny np. ./program -l -w file.txt. No mam problem bo jak otworzę plik w pFile to potem chciałbym użyć tego wsk. aby znak po znaku analizować jak to jest pod whilem. Mógłby ktoś rzucić okiem, bo coś tam się motam z tymi wskaźnikami.

#include <stdio.h>
#include <stdbool.h>
#define YES 1
#define NO 0
main( int argc, const char* argv[] )
{
 bool inl=NO,inw=NO,inc=NO;
 int help=1;
 while(argc<0)
 {
    if(argv[help]=="-l" || argv[help]=="-w" || argv[help]=="-c"){
     if(argv[help]=="-l") inl=YES;
     if(argv[help]=="-w") inw=YES;
     if(argv[help]=="-c") inl=YES;
     help++;
    }
  argc--;
 }
//////////////////////
 FILE * pFile;
 pFile = fopen (argv[argc],"r");
 char c;
 int i, nl, nw, nc, inword;
 inword = NO;
 i = nl = nw = nc = 0;
 while( (c=pFile[i]) != EOF ){ //blad
  ++nc;
  if (c == '\n') ++nl;
    if(c==' ' || c == '\n' || c=='\t')
        inword = NO;
    else if(inword == NO)
    {
        inword = YES;
        ++nw;
    }
  }
if(inl == YES) printf("%d",inl);
if(inw == YES) printf("%d",inw);
if(inc == YES) printf("%d",inc);
fclose("pFile");
}
0
#include <stdio.h>
#include <stdbool.h> // czy nie prościej użyć int ?

#define YES 1
#define NO 0

int main( int argc, const char* argv[] )
  {
   bool inl=NO,inw=NO,inc=NO;
   int file=0,n;
   for(n=1;n<argc;++n)
     {
      if(!strcmp(argv[n],"-l")) inl=YES;
      else if(!strcmp(argv[n],"-w")) inw=YES;
      else if(!strcmp(argv[n],"-c")) inl=YES;
      else file=n;
     }
   FILE * pFile;
   pFile=fopen(argv[file],"r");
   int c,p=EOF,nl=0,nw=0,nc=0,inword=NO;
   while((c=fgetc(pFile))!=EOF)
     {
      ++nc;
      if(c=='\n') ++nl;
      if(c==' ' || c == '\n' || c=='\t' || c=='\r') inword=NO;
      else nw+=!inword;
      p=c;
     }
   nl+=(p!='\n'); // jeżeli ostatni wiersz nie kończy się enterem
   if(inl == YES) printf("Wierszy: %d\n",nl);
   if(inw == YES) printf("Slow: %d\n",nw);
   if(inc == YES) printf("Znakow: %d\n",nc);
   fclose(pFile);
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1