/**
 * CS107
 * Written by Chris Gregg
 * 
 * This program prints out the number of letters, digits, spaces and
 * uppercase characters in the specified string.
 */

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <error.h>

int main(int argc, char *argv[]) {
    // The user must specify a string as an argument
    if (argc < 2) {
        error(1, 0, "Usage: ./char_functions <TEXT>");
    }

    char *string = argv[1];

    // count alpha characters, digits, whitespace, and uppercase letters
    int alphaCount = 0;
    int digitCount = 0;
    int spaceCount = 0;
    int upperCount = 0;
    int length = strlen(string);
    for (int i = 0; i < length; i++) {
        if (isalpha(string[i])) alphaCount++;
        if (isdigit(string[i])) digitCount++;
        if (isspace(string[i])) spaceCount++;
        if (isupper(string[i])) upperCount++;
    }

    printf("Alphabetic characters: %d\n", alphaCount);
    printf("Digits: %d\n", digitCount);
    printf("Spaces: %d\n", spaceCount);
    printf("Uppercase characters: %d\n", upperCount);
    printf("Total characters: %d\n", length);

    return 0;
}
