Как удалить символы (не являющиеся гласными) из введенного пользователем слова? - PullRequest
0 голосов
/ 21 апреля 2020

Итак, мне нужно создать программу, которая читает введенное пользователем слово, вынимает любой не гласный символ (включая символы) и печатает то, что осталось. Например, если вход «программы», то вывод «оа». Это то, что я до сих пор, но я не уверен, как заменить буквы ничем, я положил ??? вместо того, где я думаю замена должна быть. Я провел все утро, читая учебники моего класса и онлайн-форумы, но я не нашел решения. Я все еще начинающий, и я действительно пытаюсь получить гр asp этого. Спасибо за вашу помощь.

#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
    }

}

1 Ответ

0 голосов
/ 21 апреля 2020

В языке 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];
        }
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...