首页 > 解决方案 > 让 C 在单个输入中读取多个字符

问题描述

我是 C 新手,我正在寻找一个程序,它接受一个单词,说“Aloha”作为输入,记下单词中的所有元音和辅音,并计算单词中的字符数。

我创建了函数来确定单个字符是夏威夷语中的元音还是辅音,但我不知道如何让程序读取多个字符作为输入。例如,在下面的代码中

#include <stdio.h>

int is_vowel(char);
int is_consonant(char letter);

int main() {

char letter;
int vowel, consonant;

    printf("Please input a Hawaiian word:");
    scanf("%c", &letter);

    vowel = is_vowel(letter);
    consonant = is_consonant(letter);

    if (vowel == 1) {

        printf("%c is a vowel. \n", letter);
    } else {

        printf("%c is not a vowel. \n", letter);
    }


    if (consonant == 1) {

    printf("%c is a consonant. \n", letter);
} else {

    printf("%c is not a consonant. \n", letter);
}

}

当用户输入“Aloha”时,输出为“A 是元音。A 不是辅音”,然后停止。

而不是“A是元音,A不是辅音。l不是元音,l是辅音”等等。

如何让 C 一次读取输入中的所有字符,并获取函数(未包含在示例代码中)来检查每个字符?

谢谢!

标签: cchar

解决方案


输入应该是:az 或 AZ

#include <stdio.h>
#include <string.h>

int is_vowel(char ch) {
    if(ch=='a' || ch=='e' || ch=='i' || ch=='o' || ch=='u') return 1;
    else if(ch=='A' || ch=='E' || ch=='I' || ch=='O' || ch=='U') return 1;
    else return 0;
};
int is_consonant(char ch) {
    if(is_vowel(ch) == 0) return 1;
    else return 0;
};

int main()
{
    char letter[100];
    int vowel, consonant;
    int i, length;

    printf("Please input a Hawaiian word: ");
    scanf("%[^\n]s", &letter);
    length = strlen(letter);

    for(i=0; i<length; i++) {

        vowel = is_vowel(letter[i]);
        consonant = is_consonant(letter[i]);
        if (vowel == 1) {
            printf("%c is a vowel. \n", letter[i]);
        }
        else {
            printf("%c is not a vowel. \n", letter[i]);
        }

        if (consonant == 1) {
            printf("%c is a consonant. \n", letter[i]);
        }
        else {
            printf("%c is not a consonant. \n", letter[i]);
        }
        printf("\n");
    }

    return 0;
}


推荐阅读