【问题标题】:How do I delete characters (that are not vowels) from a user inputted word?如何从用户输入的单词中删除字符(不是元音)?
【发布时间】:2020-08-03 15:50:33
【问题描述】:

所以我需要创建一个程序来读取用户输入的单词,取出所有非元音字符(包括符号),然后打印剩下的内容。例如,如果输入是“program's”,那么输出就是“oa”。这是我到目前为止所拥有的,但我不知道如何用空替换字母,我放了???代替我认为应该替换的位置。我整个上午都在阅读我班级的教科书和在线论坛,但我还没有找到解决办法。我仍然是一个初学者,我真的很想掌握这一点。感谢您的帮助。

#include <stdio.h>
#include <string.h>
#define MAX_CHARS 100
void modString(char[]);
int main()
{

    char word[MAX_CHARS+1];
    printf("Please enter your word: ");
    scanf("%s", word);

    modString(word);
    printf("%s\n", word);

    return 0;

}
void modString(char string[])
{
    int index, letter;
    if(letter=='a' || letter=='e' || letter=='i' || letter=='o' || letter=='u' || letter=='A' || letter=='E' || letter=='I' || letter=='O' || letter=='U' || letter<'a' || letter>'z')
    {
        string[index]=string[index]-'a'+'???';
        string[index]=string[index]-'e'+'???';
        string[index]=string[index]-'i'+'???';
        string[index]=string[index]-'o'+'???';
        string[index]=string[index]-'u'+'???';
        string[index]=string[index]-'A'+'???';
        string[index]=string[index]-'E'+'???';
        string[index]=string[index]-'I'+'???';
        string[index]=string[index]-'O'+'???';
        string[index]=string[index]-'U'+'???';
        // I don't even know how to replace the symbols
    }

}

【问题讨论】:

    标签: c arrays ascii computer-science


    【解决方案1】:

    在 C 语言中,字符串是具有固定位置的字符数组,因此您不能简单地删除其中一个。我建议您创建一个带有自己索引的输出字符串,并在输入字符串中查找您想要的字符(元音)。如果它发现您将输入字符串的索引指定的字符复制到输出字符串并增加输出索引,否则什么也不做。像这样的:

    void modString(char stringIn[], char stringOut[])
    {
        int indexOut = 0;
    
    //Create a loop for seek desired chars until the end of the string, signalized by a '\0' char.
        for(int indexIn=0; string[indexIn]!='\0'; indexIn++)
        {
            char letter = string[indexIn];
    
            if(letter=='a' || letter=='e' || letter=='i' || letter=='o' || letter=='u' || letter=='A' || letter=='E' || letter=='I' || letter=='O' || letter=='U' )
            {
                stringOut[indexOut++] = string[indexIn];
            }
        }
    }
    

    希望对你有帮助。

    【讨论】:

    • 谢谢!这让它变得更容易了。但是,我收到了一个错误,上面写着error: too few arguments to function 'modString'。当我通过它时,我是否将单词切换到其中一个数组?
    • 在主程序中,您需要添加另一个向量作为第二个参数,即输出字符串;)
    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多