Определить, сколько в тексте слов, состоящих из не более, чем четырех букв - C (СИ)
Формулировка задачи:
#include<stdio.h>
#include<conio.h>
#define PATH "C:\\h1.txt"
void main()
{
int count=0,b=0;
char c;
FILE *f;
clrscr();
fopen(PATH,"r");
do {
c=getc(f);
if(c!=' ') b++;
if(c==' ')
{
if(b<=4) {count++; b=0;}
else b=0;
}
}while(c!=EOF);
printf("Koli4esto bukv <=4 %i",count);
getch();
}Решение задачи: «Определить, сколько в тексте слов, состоящих из не более, чем четырех букв»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
/* удаление требухи вокруг слова */
char *cutStr(char *s){
char *h, *t;
if ( !s || !*s )
return NULL;
for ( h = s; ispunct(*h); ++h )
;
t = s + strlen(s);
while ( ispunct(*(--t)) )
;
*(t + 1) = '\0';
return h;
}
#define FILE_NAME "simple.txt"
#define MAX_LEN 4
int main(void){
char buf[BUFSIZ], *wrd;
FILE *f;
size_t cnt = 0;
if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
fprintf(stderr, "Can't open file <%s> for input!\n", FILE_NAME);
exit(1);
}
while ( fscanf(f, "%s", buf) == 1 ){
wrd = cutStr(buf);
if ( wrd && *wrd && strlen(wrd) <= MAX_LEN )
++cnt;
}
if ( ferror(f) ){
fprintf(stderr, "Can't read from file!\n");
exit(1);
}
fclose(f);
printf("Found %d words length of %d characters or less.\n", cnt, MAX_LEN);
exit(0);
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с файлами и строками.
- Определяется функция
cutStr, которая удаляет все знаки препинания из строки. - Определяются две константы:
FILE_NAME- имя файла, который необходимо открыть, иMAX_LEN- максимальная длина слова, которое необходимо найти. - В функции
mainоткрывается файл с помощьюfopenили выводится сообщение об ошибке, если файл открыть не удалось. - В цикле
whileсчитываются строки из файла с помощьюfscanf. - Каждая прочитанная строка передается в функцию
cutStr, которая удаляет все знаки препинания из строки. - Если строка прошла проверку на максимальную длину, то увеличивается счетчик слов.
- После окончания чтения файла проверяется, были ли ошибки при чтении файла.
- Файл закрывается с помощью
fclose. - Выводится количество найденных слов и длина этих слов.
- Программа завершается с помощью
exit.