Получить те символы, принадлежащие последовательности, которые входят в нее одни раз - C (СИ)
Формулировка задачи:
Задача
Дана последовательность символов S1,s2...Sn n=>2 . Получить те символы,принадлежащие последовательности ,которые входят в нее одни раз
выдает ошибку в строке "fscanf(file,"%c",&(p->elem));" подскажите что не так, и правильно ли вообще сделат ввод и вывод данных?
#include <iostream> struct list { list *next; char elem;}*ph; int main () { FILE *file; file=fopen("input.txt","r"); list *p,*r,*z; ph=new list; ph->next=NULL; p=ph; p=new list; p->next=new list; p->elem =NULL; do { p=p->next; fscanf(file,"%c",&(p->elem)); p->next=new list; } while (p->elem!='\n'); for (p=ph;p->next!=NULL;p->next) { int t=0; for(r=p->next;r!=NULL;r=r->next) { if (p==r) {z=r->next; r->next=r->next->next; delete z; t=1; }; r=r->next; }; if(t==1) { z=p->next; p->next=p->next->next; delete z; }; p=p->next; }; file=fopen("output.txt","w"); do { p=p->next; fprintf(file,"%c",(p->elem)); } while(p->elem!='\n'); fclose(file); }
Решение задачи: «Получить те символы, принадлежащие последовательности, которые входят в нее одни раз»
textual
Листинг программы
#include <stdio.h> #include <limits.h> #define FILE_NAME "file.txt" int main(void){ FILE * f; int cnt[UCHAR_MAX + 1] = { 0 }, i; if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){ fprintf(stderr, "Can't open input file.\n"); return 1; } while ( ( i = getc(f) ) != EOF ) cnt[i]++; fclose(f); for ( i = 0; i < UCHAR_MAX + 1; ++i ) if ( cnt[i] == 1 ) putchar(i); putchar('\n'); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и для определения диапазона значений символов.
- Объявление имени файла, с которым будет работать программа.
- Объявление переменной
f
типаFILE*
для работы с файлом. - Проверка открытия файла и вывод сообщения об ошибке в случае неудачи.
- Установка значения переменной
i
равнымEOF
перед выходом из цикла. - Организация цикла, который выполняется до тех пор, пока не достигнут конец файла.
- Увеличение счетчика символа в массиве
cnt
на единицу. - Закрытие файла после окончания чтения.
- Организация цикла для вывода символов, которые встречаются в файле только один раз.
- Вывод символа, который является текущим элементом цикла.
- Возврат 0 для успешного выполнения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д