-
-
Save DreamVB/3a2f24d970abd069965cadd9d121c153 to your computer and use it in GitHub Desktop.
Simple Text Statistics tool
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // File : ts.c | |
| // By : Ben a.k.a DreamVB | |
| // Date : 20:50 26/05/2020 | |
| // Info : Little tool to count the Lines, Digts Words, Chars, UpperCase and LowerCase chars in a file. | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <ctype.h> | |
| #include <string.h> | |
| int m_words = 0; | |
| int m_chars = 0; | |
| int m_upper = 0; | |
| int m_lower = 0; | |
| int m_lines = 0; | |
| int m_digits = 0; | |
| int _countUpper(char *src){ | |
| int x = 0; | |
| int u = 0; | |
| while(x < strlen(src)){ | |
| //Check if we have an alpha | |
| if(isalpha(src[x])){ | |
| if(isupper(src[x])){ | |
| u++; | |
| } | |
| } | |
| x++; | |
| } | |
| return u; | |
| } | |
| int _countLower(char *src){ | |
| int x = 0; | |
| int l = 0; | |
| while(x < strlen(src)){ | |
| //Check if we have an alpha | |
| if(isalpha(src[x])){ | |
| if(islower(src[x])){ | |
| l++; | |
| } | |
| } | |
| x++; | |
| } | |
| return l; | |
| } | |
| int main(int argc, char *argv[]) | |
| { | |
| FILE *fp = NULL; | |
| char ch = '\0'; | |
| char lzBuffer[30]; | |
| int x = 0; | |
| if(argc != 2){ | |
| printf("Source File Not Found.\n"); | |
| printf(" Usage: ts Filename\n"); | |
| return 0; | |
| } | |
| //Open file | |
| fp = fopen(argv[1],"r"); | |
| if(fp == NULL){ | |
| printf("Cannot Read Source File:\n"); | |
| printf(argv[1]); | |
| } | |
| //While not end of file read it | |
| while(!feof(fp)){ | |
| //Get current char from file. | |
| ch = fgetc(fp); | |
| //Count digits | |
| if(isdigit(ch)){ | |
| m_digits++; | |
| } | |
| //Count number of lines | |
| if(ch == '\n' || ch == '\0'){ | |
| m_lines++; | |
| } | |
| //Check if end of file. | |
| if(!feof(fp)){ | |
| //Check for space char | |
| if((ch == 32) || (ch == 9)){ | |
| //Set end of string buffer. | |
| lzBuffer[x] = '\0'; | |
| //Check length of string | |
| if(strlen(lzBuffer) > 0 ){ | |
| //INC word counter | |
| m_words++; | |
| //INC number of chars in lzBuffer | |
| m_chars+= strlen(lzBuffer); | |
| //INC upper. | |
| m_upper+= _countUpper(lzBuffer); | |
| //INC lower. | |
| m_lower+= _countLower(lzBuffer); | |
| } | |
| //Reset x | |
| x = 0; | |
| }else{ | |
| //Collect chars for string buffer. | |
| lzBuffer[x] = ch; | |
| //INC buffer char | |
| x+=1; | |
| } | |
| } | |
| } | |
| //Set end of string buffer | |
| lzBuffer[x] = '\0'; | |
| //Check length of string | |
| if(strlen(lzBuffer) > 0 ){ | |
| //INC word counter | |
| m_words++; | |
| //INC number of chars in lzBuffer | |
| m_chars+= strlen(lzBuffer); | |
| //INC upper | |
| m_upper+= _countUpper(lzBuffer); | |
| //INC lower | |
| m_lower+= _countLower(lzBuffer); | |
| } | |
| //Close file | |
| fclose(fp); | |
| //Print stats of Words and Chars | |
| printf("Lines : %d\n",m_lines); | |
| printf("Digits : %d\n",m_digits); | |
| printf("Words : %d\n",m_words); | |
| printf("Chars : %d\n",m_chars); | |
| printf("UpperCase : %d\n",m_upper); | |
| printf("LowerCase : %d\n",m_lower); | |
| //Clear array | |
| memset(lzBuffer,0,sizeof lzBuffer); | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment