// wc.c
// auther : mhewedy
#include <stdio.h>
#include <stdlib.h>
int wc(char*);
int main(int argc, char** argv)
{
    FILE *fp = NULL;
    char buff[100], *fileName = NULL;
    int wcnt = 0;
    if (argc <2)
    {
        fprintf(stderr, "Usage: wc <file_name>\n");
        exit(1);
    }
    fileName = argv[1];
    if ( (fp = fopen(fileName, "r")) == NULL)
    {
        perror(fileName);
        exit(1);
    }
    while (!feof(fp))
    {
        buff[0] = '\0';
        fgets(buff, sizeof buff/sizeof(char), fp);
        wcnt += wc(buff);
    }
    fclose(fp);
    printf("word count: %i words\n", wcnt);
    return 0;
}
/*
Idea of this function taked from the book : Programming in C, thired edition
*/
int wc(char* line)
{
    int is_alpha(int ch), wc=0;
    int start_word = 1;
    while (*line != '\0')
    {
        if (is_alpha(*line))
        {
            if (start_word)
            {
                start_word = 0;
                wc++;
            }
        }else{
            start_word = 1;
        }
        line++;
    }
    return wc;
}
int is_alpha(int ch)
{
    return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');
}
12 August 2010
wc: very simple word count C program
It is a very trivial program that count the words in a file according to some policy.
Subscribe to:
Post Comments (Atom)
 
 
No comments:
Post a Comment