Дан файл со строками, подсчитать количество чисел в нем(именно чисел, а не цифр) - C (СИ)
Формулировка задачи:
Подскажите как организовать чтение чисел.
Решение задачи: «Дан файл со строками, подсчитать количество чисел в нем(именно чисел, а не цифр)»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
FILE *f;
char str[100];
int i,find,n;
f=fopen("MyFile","r");
n=0;
while(fgets(str,100,f)!=NULL)
for(find=i=0; *(str+i); i++)
if(*(str+i)>='0' && *(str+i)<='9' || find && *(str+i)=='.')
{
if(!find)
{
find=1;
n++;
}
}
else find=0;
fclose(f);
printf("numbers=%d\n",n);
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные:
FILE *f;- указатель на файл;char str[100];- строка для чтения информации из файла;int i,find,n;- счётчики.
- Открывается файл с помощью функции
fopen. - Устанавливается счётчик чисел в 0.
- Происходит чтение файла с помощью цикла
while(fgets(str,100,f)!=NULL). - В каждой строке ищутся числа с помощью вложенного цикла
for(find=i=0; *(str+i); i++). - Если символ является числом или точкой и предыдущий символ был числом, то увеличивается счётчик чисел.
- Если в строке нет чисел, то сбрасывается счётчик чисел.
- После чтения всех строк закрывается файл с помощью функции
fclose. - Выводится количество чисел с помощью функции
printf. - Ждётся нажатия клавиши с помощью функции
getch. - Возвращается 0, чтобы указать, что программа успешно завершилась.