Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main()
- {
- FILE *f;
- fpos_t end, ind_cr, ind_cp, temp;
- char current, comp, next;
- int flag = 0;
- if(!(f=fopen("file", "r+t")))
- {
- printf("Невозможно открыть файл");
- return -1;
- }
- while(!feof(f))
- {
- fscanf(f, "%c", ¤t);
- if(feof(f)) break;
- printf("%c", current);
- }
- end = ftell(f); //определение позиции конца строки
- rewind(f);
- while(ftell(f) != end-1)
- {
- fscanf(f, "%c", ¤t); //считывание исходного символа
- fgetpos(f, &ind_cr); //запоминается его позиция
- while(ftell(f) != end)
- {
- fscanf(f, "%c", &comp); //считывания последующих символов для поиска совпадений
- temp = ftell(f);
- if(current == comp) //если найдено совпадение
- {
- flag = 1; //поднимается флаг
- fseek(f, -1, 1);
- while(ftell(f) != end)
- {
- fgetpos(f, &ind_cp); //запоминается позиция очередного символа
- fseek(f, 1, 1);
- fscanf(f, "%c", &next); //считывается символ, следующий за текущим
- fsetpos(f, &ind_cp);
- fprintf(f, "%c", next); //исключение comp из строки
- }
- end--; //искусственное обрезание строки
- fsetpos(f, &temp); //обеспечение перехода к следующему символа для сравнения
- fseek(f, -1, 1);
- }
- }
- if(!flag) //если совпадений не найдено
- fsetpos(f, &ind_cr);
- temp = ind_cr;
- if(flag) //после удаления совпадений, исключается из строки и исходный
- {
- fsetpos(f, &ind_cr);
- fseek(f, -1, 1);
- while(ftell(f) != end-1)
- {
- fgetpos(f, &ind_cr);
- fseek(f, 1, 1);
- fscanf(f, "%c", &next);
- fsetpos(f, &ind_cr);
- fprintf(f, "%c", next);
- }
- flag = 0;
- end--;
- fsetpos(f, &temp);
- fseek(f, -1, 1);
- }
- }
- printf("\n");
- rewind(f);
- while(ftell(f) != end)
- {
- fscanf(f, "%c", ¤t);
- if(feof(f)) break;
- printf("%c", current);
- }
- printf("\n\n");
- fclose(f);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement