Вывести количество чисел в строке - C (СИ)
Формулировка задачи:
Здрасьте. Плевое задание в пару строк упрямо не хочет функционировать, выдавая Run-Time Check failure #2 - Stack around the variable 's' was corrupted и ноль как результат.
Что я делаю не так?
#include <stdio.h>
void main(void)
{
char s[20];
int count = 0;
gets(s);
for (int i = 0; s[i] = '\0'; i++)
{
if (s[i] >= '0' || s[i] <= '9')
count++;
}
printf_s("%d", count);
}Решение задачи: «Вывести количество чисел в строке»
textual
Листинг программы
#include <stdio.h>
#define MAX 20 // кол-во элементов в массиве
int main(void)
{
char s[MAX];
int count = 0, i=0;
// ввод массива char s
while ((s[i]=getchar())!='\n')
i++;
// записываем последний элемент строки '\0'
if (i>=MAX-2)
s[MAX-1]='\0';
else s[i]='\0';
// считаем кол-во символов в строке
for (i = 0; s[i] != '\0'; i++)
{
if (s[i] >= '0' && s[i] <= '9')
count++;
}
printf("%i \n", count);
}
Объяснение кода листинга программы
В этом коде:
- Объявляется массив символов
sмаксимального размераMAX(20). - В цикле
whileосуществляется ввод строки с помощью функцииgetchar(), которая возвращает следующий символ ввода. Последний символ в строке - это символ новой строки ('\n'). - В цикле
forпроисходит проход по всем символам строки. Если символ является числом (больше или равен '0' и меньше или равен '9'), то увеличивается счетчикcount. - Выводится значение счетчика
count, которое представляет собой количество чисел в строке.