1、for循环遍历字符串
逐个检查字符是否为元音字母,代码如下,
#include <stdio.h> #include <string.h> #include <ctype.h> void findVowels(const char *str) { int len = strlen(str); printf("Vowels in the string: "); for (int i = 0; i < len; ++i) { char ch = tolower(str[i]); if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { printf("%c ", str[i]); } } printf("\n"); } int main() { const char *str = "Hello, World!"; findVowels(str); return 0; }
2、使用switch语句判断
通过for
循环实现遍历,然后通过switch
语句进行判断,代码如下,
#include <stdio.h> #include <string.h> #include <ctype.h> void findVowels(const char *str) { printf("Vowels in the string: "); while (*str) { switch (tolower(*str)) { case 'a': case 'e': case 'i': case 'o': case 'u': printf("%c ", *str); break; } str++; } printf("\n"); } int main() { char str[100]; printf("输入一个字符串: "); fgets(str, sizeof(str), stdin); findVowels(str); return 0; }
3、使用 strchr 函数和元音字母数组
通过循环遍历字符串,然后通过使用 strchr
函数和元音字母数组,然后进行判断,代码如下,
#include <stdio.h> #include <string.h> void findVowels(const char *str) { const char vowels[] = "aeiouAEIOU"; printf("Vowels in the string: "); for (const char *p = str; *p != '\0'; ++p) { if (strchr(vowels, *p)) { printf("%c ", *p); } } printf("\n"); } int main() { char str[100]; printf("输入一个字符串: "); fgets(str, sizeof(str), stdin); findVowels(str); return 0; }
4、使用位运算来检查元音字母
使用循环遍历整个字符串,然后在通过位运算的方式进行对字符串中每个字母的判断,代码如下,
#include <stdio.h> #include <string.h> #include <ctype.h> void findVowels(const char *str) { int vowelMask = 0; const char *vowels = "aeiouAEIOU"; // Set bits for each vowel in vowelMask for (int i = 0; vowels[i] != '\0'; ++i) { vowelMask |= (1 << (tolower(vowels[i]) - 'a')); } printf("Vowels in the string: "); while (*str) { if (isalpha(*str) && (vowelMask & (1 << (tolower(*str) - 'a')))) { printf("%c ", *str); } str++; } printf("\n"); } int main() { char str[100]; printf("输入一个字符串: "); fgets(str, sizeof(str), stdin); findVowels(str); return 0; }
5、使用正则表达式
通过写一个判断元音字每的正则表达式,用正则表式对字符串进行匹配,从而判断出来字符串中的所有元音字母。
#include <stdio.h> #include <string.h> #include <pcre.h> void findVowels(const char *str) { const char *pattern = "[aeiouAEIOU]"; pcre *re; const char *error; int erroffset; int ovector[30]; int rc; re = pcre_compile(pattern, 0, &error, &erroffset, NULL); if (re == NULL) { printf("PCRE compilation failed at offset %d: %s\n", erroffset, error); return; } printf("Vowels in the string: "); rc = pcre_exec(re, NULL, str, strlen(str), 0, 0, ovector, 30); while (rc >= 0) { printf("%c ", str[ovector[0]]); rc = pcre_exec(re, NULL, str, strlen(str), ovector[1], 0, ovector, 30); } printf("\n"); pcre_free(re); } int main() { char str[100]; printf("Enter a string: "); fgets(str, sizeof(str), stdin); findVowels(str); return 0; }