Удалить из файла фразы, содержащие слова из из гласных букв - 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," ")
}
Объяснение кода листинга программы
- Вводится строка, представленная в виде массива символов, который хранится в переменной типа char под названием
str. - Используя функцию strtok, строка разбивается на отдельные слова (токены), которые сохраняются в переменной типа char под названием
p. Каждое слово отделяется от остальных словами, в качестве разделителя используется пробел. - Затем используется цикл while, который продолжается до тех пор, пока не будет найден следующий токен (слово).
- Внутри цикла проверяется, содержит ли текущее слово гласные буквы. Если да, то оно удаляется из исходной строки.
- После обработки каждого слова цикл продолжается до тех пор, пока не будет найден следующий токен.
- После обработки всех токенов исходная строка
strбудет содержать только те слова, которые не содержат гласные буквы.