Удалить определенный символ из строки - 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; }
Объяснение кода листинга программы
- Устанавливаются необходимые библиотеки для работы с кодировкой локали и вводом-выводом
- Задается начальное значение переменной
smeshenie
равное 0 - Устанавливается локальная кодировка на
rus
- Создается пустая строка
text
с символом '\0' в конце - Выводится приглашение для ввода строки
- Вводится строка с помощью функции fgets()
- Выводится приглашение для ввода символа, который необходимо удалить
- Считывается символ с помощью функции scanf()
- В цикле for происходит перебор символов строки
text
- В каждой итерации цикла, символы строки
text
перемещаются вперед на значение переменнойsmeshenie
- Если текущий символ равен введенному символу, то значение переменной
smeshenie
увеличивается на 1 и текущий символ заменяется на следующий символ после него в строкеtext
- После окончания цикла, выводится отформатированная строка
text
- Выводится приглашение для нажатия клавиши
PAUSE
- Программа завершается возвратом значения 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д