Изъять цифры из строки символов и создать из них новую строку - C (СИ)
Формулировка задачи:
Ввести строку с клавиатуры, найти в ней цифры и создать из них новую строку.
Решение задачи: «Изъять цифры из строки символов и создать из них новую строку»
textual
Листинг программы
/*
============================================================================
Name : c_digit.c
Author : UranFlex
Version : 0.1 alpha
Copyright : GNU GPL
Description : Ввести строку с клавиатуры, найти в ней цифры и создать из них новую строку.
* C, Ansi-style.
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <locale.h >
#define SZ 10 // максимальный размер строки, включая символ новой строки или завершающий ноль
int main(void) {
setlocale(LC_ALL,"Russian");
char str[ SZ ], strDigit[ SZ ]; // контейнеры для вводжимой и цифровой строк
// запрашиваем у пользователя строку
printf("%s %d %s\n", "введите строку, будут прочитаны лишь первые", SZ, "символов включая символ новой строки");
fgets( str, sizeof( str ), stdin ); // читаем первые SZ символов
fflush( stdin ); // очищаем stdin
// в цикле проходимся по всем символам введеной строки
size_t i, j = 0;
for( i = 0; i < strlen( str ); ++i )
if( isdigit( str[ i ] ) ){ // если находим цифру
strDigit[ j++ ] = str[ i ]; // то заносим ее в очередной символ нашей цифровой строки
}
strDigit[ j ] = '\0'; // последний символ в цифровой строке будет завершающий ноль - чтобы в строке обозначить ее конец
puts( strDigit ); // и выводим ее на экран
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Вводится строка с клавиатуры
- Вводится первая SZ-1 символов, включая символ новой строки
- Цикл проходит по всем символам введенной строки
- Если символ является цифрой, он добавляется в строку strDigit
- Последний символ в строке strDigit устанавливается как завершающий ноль
- Строка strDigit выводится на экран
- Программа возвращает EXIT_SUCCESS