#include <stdio.h>
#include <ctype.h> // For character type functions
#include <cstring> // For strlen function
// Define the structure to hold string statistics
struct stringStats {
int stringLength;
int upperCaseCount;
int lowerCaseCount;
int digitCount;
int spaceCount;
int nonAlphanumericCount;
};
// Function prototype
struct stringStats getStringStats(const char *theString);
int main() {
char inputString[100]; // Input string buffer
printf("Enter a string: ");
if (fgets(inputString, sizeof(inputString), stdin) == NULL) {
printf("Error reading input.\n");
return 1; // Return an error code if fgets fails
}
// Handling the newline character fgets reads
size_t ln = strlen(inputString) - 1;
if (inputString[ln] == '\n')
inputString[ln] = '\0';
// Get statistics of the string
struct stringStats stats = getStringStats(inputString);
// Print the statistics
printf("String Length: %d\n", stats.stringLength);
printf("Upper Case Letters: %d\n", stats.upperCaseCount);
printf("Lower Case Letters: %d\n", stats.lowerCaseCount);
printf("Digits: %d\n", stats.digitCount);
printf("Blank Spaces: %d\n", stats.spaceCount);
printf("Non-Alphanumeric Characters: %d\n", stats.nonAlphanumericCount);
return 0;
}
// Function to analyze the string and return its statistics
struct stringStats getStringStats(const char *theString) {
struct stringStats stats = {0}; // Initialize all fields to zero
const char *p = theString; // Pointer to iterate through the string
while (*p) { // Continue until the end of the string
stats.stringLength++; // Increment string length for each character
if (isupper(*p)) {
stats.upperCaseCount++;
} else if (islower(*p)) {
stats.lowerCaseCount++;
} else if (isdigit(*p)) {
stats.digitCount++;
} else if (isspace(*p)) {
stats.spaceCount++;
} else {
stats.nonAlphanumericCount++;
}
p++; // Move to the next character
}
return stats;
}