#include int main(int argc, char *argv[]) { if (argc < 2) { printf("ERROR: You need at least one argument.\n"); // this is how you abort a program return 1; } int i = 0; int arg = 1; for (arg = 1; arg < argc; arg++) { for (i = 0; argv[arg][i] != '\0'; i++) { printf("(%d) ", arg); char letter = argv[arg][i]; // lowercase letters if (letter >= 'A' && letter <= 'Z') { letter += ('a' - 'A'); } switch (letter) { case 'a': printf("%d: 'a'\n", i); break; case 'e': printf("%d: 'e'\n", i); break; case 'i': printf("%d: 'i'\n", i); break; case 'o': printf("%d: 'o'\n", i); break; case 'u': printf("%d: 'u'\n", i); break; case 'y': // why i > 2? is this a bug? if (i > 2) { // it's only sometimes Y printf("%d: 'y'\n", i); } else { printf("%d: %c is not a vowel\n", i, letter); } break; default: printf("%d: %c is not a vowel\n", i, letter); } } } return 0; }