如何检查令牌中的某些字符

时间:2015-04-04 04:29:39

标签: c

我有代码,其中我已经对字符串进行了标记,并打印了结果。代码有一个函数,我在其中使用一些指针算法来改变每个令牌以重复工作在" Pig Latin"如果单个标记的第一个字母以元音开头,代码还要求我用WORD + WAY打印单词。我认为一个开关(case)可以用于此,但我不确定用于完成此任务的字符串函数

以下是基地" Pig Latin"更改。

printlatinwork (char *TOKEN)
{
    printf ("%s%c%s ", TOKEN + 1, TOKEN[0], "ay");
    return;
}

从" test"

的输入返回
esttay

1 个答案:

答案 0 :(得分:1)

这不是太难,只需针对TOKEN列表检查vowels的第一个字符。类似于:

void printlatinwork (char *TOKEN)
{
    char *vowels = "aeiouAEIOU";

    if (strchr (vowels, *TOKEN))
        printf ("%sway", TOKEN);
    else
        printf ("%s%c%s ", TOKEN + 1, TOKEN[0], "ay");
}

注意:需要string.h

如果你需要一个不依赖任何额外标题的版本,这样的东西也会起作用:

void printlatinwork (char *TOKEN)
{
    char *vowels = "aeiouAEIOU";
    char firstisvowel = 0;
    char *v = vowels;

    while (*v)
        if (*TOKEN == *v++)
            firstisvowel = 1;

    if (firstisvowel)
        printf ("%sway", TOKEN);
    else
        printf ("%s%c%s ", TOKEN + 1, TOKEN[0], "ay");
}