Напечатать все слова из текстового файла, состоящие только из латинских букв - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д