Из статьи вы узнаете, как удалить все цифры из строки на Си. Будет приведен исходный код с комментариями. Можно скачать исходник программы. Используемый язык программирования — C.
Введение
Данная проблема часто встречается у новичков, и, практически каждый, кто более-менее серьезно увлекется программированием, столкнется с такой задачей. Вопрос, как удалить все цифры из строки с помощью языка программирования Си — это очень популярный запрос к поисковым машинам.
Для начала немножко теории. Формально, строк, как типа данных, в чистом Си — нет. Строка, в данном языке — это последовательность символьных элементов (массив типа char).
Строка обязательно должна завершаться символом конца строки: ‘\0’ (нулевой символ). Иначе при работе с, так называемыми, «строковыми» функциями (например: puts, printf, strcpy) будут возникать ошибки.
Удалить все цифры из строки
Пусть в символьном массиве in хранится исходная строка. Необходимо удалить все цифры из строки.
1 |
char in[100]; |
Результат удаления занесем в строку out.
1 |
char out[100]; |
Также нам понадобятся два индекса, для сохранения номера текущего элемента в обоих массивах:
1 2 3 4 |
//индекс массива символов входной стоки int indexIN = 0; //индекс массива символов результирующей стоки int indexOUT = 0; |
Для того, чтобы удалить все цифры из строки на Си, необходимо использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
while (in[indexIN] != '\0') { if (in[indexIN] >= '0' && in[indexIN] <= '9') indexIN++; else { out[indexOUT] = in[indexIN]; indexIN++; indexOUT++; } } out[indexOUT] = '\0'; |
В цикле перебираются все элементы строки in. В качестве остановки используется тот факт, что строка обязательно должна заканчиваться символом конца строки ‘\0’.
Если элемент является цифрой (это проверяется с помощью условного оператора if), то в результирующую строку ничего не заносится, мы просто идем дальше по входной строке. В противном случае (если элемент не цифра), он копируется в выходную строку.
После того, как цикл будет пройден, выходную строку необходимо завершить символом конца строки (нулевым символом).
Пример программы
Приведем пример программы, решающей данную задачу и отвечающей на вопрос: как удалить все цифры из строки на Си. Текст программы сопровождается подробными комментариями.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
#include <stdio.h> #include <conio.h> #include <Windows.h> int main() { //решаем проблему с отображением русского языка в консоли SetConsoleCP(1251); SetConsoleOutputCP(1251); //массив символов для входной строки char in[100]; //массив символов для выходной строки char out[100]; printf("Введите строку:\n"); //считываем строку gets_s(in); //индекс массива символов входной стоки int indexIN = 0; //индекс массива символов результирующей стоки int indexOUT = 0; while (in[indexIN] != '\0') { if (in[indexIN] >= '0' && in[indexIN] <= '9') indexIN++; else { out[indexOUT] = in[indexIN]; indexIN++; indexOUT++; } } //добавляем символ конца строки в результирующий массив out[indexOUT] = '\0'; //вывод результата в консоль puts(out); //чтобы консоль сразу не закрылась после выполнения программы _getch(); return 0; } |
Демонстрация работы программы:
Скачать исходник программы (проект для Visual Studio):
Скачать исходник
Поделиться в соц. сетях: