Удалить из файла фразы, содержащие слова из из гласных букв - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан файл, содержащий некоторый текст. Удалить из него фразы, содержащие слова, состоящие только из гласных букв. Исходный файл к задаче не содержит русских букв, каждая фраза расположена на отдельной строке, словами считаются группы символов между группами пробелов. пример фразы: qwe eee. aloha.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
int main(int argc, char *argv[])
{
  FILE *f1,*f2;
  char str[300];
  char glas[34]="AaEeYyUuIiOo";
  char *p;
  int i=0,k=0,l=0,q=0,d=0,L=0;
  f1=fopen("file1.txt","r");
  if(f1==NULL)
  {
             puts("ERROR");
             system("pause");
             return 1;
  }
  f2=fopen("file2.txt","w");
  if(f2==NULL)
  {
             puts("ERROR");
             system("pause");
             return 1;
  }    
   while((str[i]=fgetc(f1))!=EOF)
  {
                  if(str[i]=='.' )
                  { 
                                     str[i+1]='\0';                                
                                     p=strtok(str," ");
                                     while(p=strtok(NULL," "))
                                     {
                                                           for(d=0;d<strlen(p);d++)
                                                                                    for(k=0;k<12;k++)
                                                                                                     if (p[d]==glas[k])
                                                                                                        l++;    
                                                           if(l==strlen(p))
                                                                           q=1;
                                                           if(q!=1) fputs(str,f2);;
                                                        
                                                           l=0;
                                     }

                  for(k = 0; k < 300; k++)
                                           str[k] = '\0';                                 
                  }i++;

  }

  fclose(f1);
  fclose(f2);
  system("PAUSE");  
  return 0;
}

Решение задачи: «Удалить из файла фразы, содержащие слова из из гласных букв»

textual
Листинг программы
p=strtok(str," ");
while (p)
{
    // do ...
    p=strtok(NULL," ")
}

Объяснение кода листинга программы

  1. Вводится строка, представленная в виде массива символов, который хранится в переменной типа char под названием str.
  2. Используя функцию strtok, строка разбивается на отдельные слова (токены), которые сохраняются в переменной типа char под названием p. Каждое слово отделяется от остальных словами, в качестве разделителя используется пробел.
  3. Затем используется цикл while, который продолжается до тех пор, пока не будет найден следующий токен (слово).
  4. Внутри цикла проверяется, содержит ли текущее слово гласные буквы. Если да, то оно удаляется из исходной строки.
  5. После обработки каждого слова цикл продолжается до тех пор, пока не будет найден следующий токен.
  6. После обработки всех токенов исходная строка str будет содержать только те слова, которые не содержат гласные буквы.

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы