Напечатать все слова из текстового файла, состоящие только из латинских букв - C (СИ)
Формулировка задачи:
Напечатать все слова из текстового файла, состоящие только из латинских букв
Как изменить условие в функции Count, чтобы программа не печатала слова, содержащие цифры?
#define DELIMITERS ".,:;?!\n\t" #define N 1024 int Count(char *s) { int i,count; for(i=count=0;s[i]!='\0';i++) { if (isalpha(s[i])) count++; } return count; } int ReadWords(char *fname) { FILE *f; char s[N],*word; int i,j,flag[256]={0}; if ((f=fopen(fname, "r"))==NULL) return 1; for(i=0;DELIMITERS[i];i++) flag [DELIMITERS[i]]=1; while (fgets(s,N,f)!=NULL) { for(i=0;s[i]&&flag[s[i]];i++) ; while(s[i]) { word=s+i; while(s[i]&&!flag[s[i]]) i++; j=i; while (s[i]&&flag[s[i]]) i++; s[j]='\0'; if (Count(word)) puts(word); } } fclose(f); return 0; } int main() { ReadWords("d:\\a.txt"); return 0; }
Решение задачи: «Напечатать все слова из текстового файла, состоящие только из латинских букв»
textual
Листинг программы
#include <stdlib.h> bool f(char *s) { while(*s) if (!isalpha(*s++)) return false; return true; }
Объяснение кода листинга программы
В данном коде:
- Подключается стандартная библиотека C stdlib.h.
- Определяется функция f, которая принимает в качестве аргумента указатель на строку (char *s).
- В функции происходит проверка каждого символа строки на принадлежность к классу букв (isalpha). Если символ не является буквой, то функция возвращает false. Если все символы строки являются буквами, то функция возвращает true.
- В тело функции помещён цикл while, который выполняется до тех пор, пока не будет достигнут конец строки (указатель на '\0').
- Если символ не является буквой, то функция возвращает false и прерывает выполнение.
- Если все символы строки являются буквами, то функция возвращает true.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д