Удалить определенный символ из строки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть задание: нужно ввести ряд, что состоит из латинских символов, розделенных пробелами, и изменить каждое слово в ряде, удалив из него определенный символ. Именно удалить, заменить на пробел нельзя, количество пробелов не должно измениться. Написал начало, а как удалить символ не знаю
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main()
{
    int i,j,k;
    setlocale(LC_ALL, "rus");
    char a;
    char text[50]= {};
    printf ("Напишите текст (не более 50 латинских символов):\n");
    gets(text);
    printf ("Введите символ, который нужно убрать:\n");
    scanf("%c", &a);
    printf ("Символ - %c\n", a);
    for (i=0; text[i]!='\0'; i++)
    {
        for (j=i; text[j]!='\0'; j++)
            if (text[i] == a)
            {
 
            }
    }
    printf("%s \n", text);
    return 0;
}

Решение задачи: «Удалить определенный символ из строки»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main()
{
    int i,j,k;
    int smeshenie=0;
    setlocale(LC_ALL, "rus");
    char a;
    char text[100]= {'\0',};
    printf ("ГЌГ*ГЇГЁГёГЁГІГҐ ГІГҐГЄГ±ГІ (Г*ГҐ áîëåå 50 Г«Г*ГІГЁГ*Г±ГЄГЁГµ ñèìâîëîâ):\n");
    fgets(text, 50, stdin);//ëó÷øå èìåГ*Г*Г® ГЅГІГі ГґГіГ*êöèþ ГІГ*ГЄ ГЄГ*ГЄ Г®Г*Г* Г§Г*Г№ГЁГ№ГҐГ*Г*
    printf ("Ââåäèòå ñèìâîë, êîòîðûé Г*ГіГ¦Г*Г® ГіГЎГ°Г*ГІГј: ");
    scanf("%c", &a);
    for (i=0; text[i]!='\0'; i++){
        text[i]=text[i+smeshenie];
        if (text[i] == a){
            smeshenie++; 
            text[i]=text[i+smeshenie];
            i--;
        }
    }
    puts(text);
    system("PAUSE");
    return 0;
}

Объяснение кода листинга программы

  1. Устанавливаются необходимые библиотеки для работы с кодировкой локали и вводом-выводом
  2. Задается начальное значение переменной smeshenie равное 0
  3. Устанавливается локальная кодировка на rus
  4. Создается пустая строка text с символом '\0' в конце
  5. Выводится приглашение для ввода строки
  6. Вводится строка с помощью функции fgets()
  7. Выводится приглашение для ввода символа, который необходимо удалить
  8. Считывается символ с помощью функции scanf()
  9. В цикле for происходит перебор символов строки text
  10. В каждой итерации цикла, символы строки text перемещаются вперед на значение переменной smeshenie
  11. Если текущий символ равен введенному символу, то значение переменной smeshenie увеличивается на 1 и текущий символ заменяется на следующий символ после него в строке text
  12. После окончания цикла, выводится отформатированная строка text
  13. Выводится приглашение для нажатия клавиши PAUSE
  14. Программа завершается возвратом значения 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы