fork download
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. struct stringStats
  5. {
  6. int stringLength;
  7. int upperCaseCount;
  8. int lowerCaseCount;
  9. int digitCount;
  10. int blankCount;
  11. int nonAlnumCount;
  12. int vowelCount;
  13. int nonVowelCount;
  14. int specialCharCount;
  15. int hexDigitCount;
  16. int octalDigitCount;
  17. int binaryDigitCount;
  18. int punctuatorCount;
  19. int controlCharCount;
  20. int printableCount;
  21. };
  22.  
  23. struct stringStats getStringStats(char theString[])
  24. {
  25. struct stringStats stats = {0};
  26. unsigned char c;
  27. char *p = theString;
  28.  
  29. while (*p != '\0')
  30. {
  31. c = (unsigned char)*p;
  32. stats.stringLength++;
  33.  
  34. if (isupper((unsigned char)c)) stats.upperCaseCount++;
  35. if (islower((unsigned char)c)) stats.lowerCaseCount++;
  36. if (isdigit((unsigned char)c)) stats.digitCount++;
  37.  
  38. if (c == ' ') stats.blankCount++;
  39. if (!isalnum((unsigned char)c)) stats.nonAlnumCount++;
  40.  
  41. if (isalpha((unsigned char)c))
  42. {
  43. char lower = (char)tolower((unsigned char)c);
  44. if (lower == 'a' || lower == 'e' || lower == 'i' || lower == 'o' || lower == 'u')
  45. stats.vowelCount++;
  46. else
  47. stats.nonVowelCount++;
  48. }
  49.  
  50. if (isprint((unsigned char)c) && !isalnum((unsigned char)c) && c != ' ')
  51. {
  52. stats.specialCharCount++;
  53. stats.punctuatorCount++;
  54. }
  55.  
  56. if (isxdigit((unsigned char)c)) stats.hexDigitCount++;
  57. if (c >= '0' && c <= '7') stats.octalDigitCount++;
  58. if (c == '0' || c == '1') stats.binaryDigitCount++;
  59.  
  60. if (iscntrl((unsigned char)c)) stats.controlCharCount++;
  61. if (isprint((unsigned char)c)) stats.printableCount++;
  62.  
  63. p++;
  64. }
  65.  
  66. return stats;
  67. }
  68.  
  69. int main(void)
  70. {
  71. char testString[] = "AbCde"; // Uppercase: A,C (2) | Lowercase: b,d,e (3)
  72.  
  73. struct stringStats s = getStringStats(testString);
  74.  
  75. printf("String: \"%s\"\n", testString);
  76. printf("Uppercase letters: %d\n", s.upperCaseCount);
  77. printf("Lowercase letters: %d\n", s.lowerCaseCount);
  78.  
  79. return 0;
  80. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
String: "AbCde"
Uppercase letters: 2
Lowercase letters: 3