Составить функцию для подсчета количества числовых констант (последовательностей цифр) - C (СИ)
Формулировка задачи:
Составить функцию для подсчета количества числовых констант (последовательностей цифр) в символьной строке и программу для проверки работоспособности этой функции.
Решение задачи: «Составить функцию для подсчета количества числовых констант (последовательностей цифр)»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int numbers_count(const char * s) {
if ( s = strpbrk(s, "0123456789") ) {
strtol(s, (char**)&s, 10);
return 1 + numbers_count(s);
}
else
return 0;
}
int main(void) {
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
printf("%d numbers.\n", numbers_count(buf));
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
, , . - Определение функции
numbers_count, которая принимает на вход указатель на строкуsи считает количество числовых констант в ней. - В функции
numbers_countиспользуется функцияstrpbrk, которая ищет первое вхождение в строкуsлюбого символа из строки0123456789(цифры). Если такой символ найден, то вsприводит к нему указатель и функция рекурсивно вызывается для оставшейся части строкиs. Если символ не найден, то функция возвращает 0. - В функции
mainсоздается буферbufдля считывания строки с помощьюfgets. - В
mainорганизован цикл, который считывает строку с помощьюfgets, выводит количество числовых констант в ней с помощьюnumbers_countи завершается, когда пользователь вводит пустую строку или сигнал конца файла. - В конце программы возвращается 0, что означает успешный конец работы программы.