Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- /*
- *
- */
- int main(int argc, char** argv) {
- FILE *f;
- if (!(f=fopen("/home/andrei/Рабочий стол/паша/words.txt","r")))//открываем
- {
- printf("Невозможно открыть файл\n");
- exit(1);
- }
- signed char smv;//переменная-приемник при считывании из файла символов
- char razdel;// флаг: прочитан разделитель
- char clovo;//флаг: идет считывание символов слова
- char all[20];//массив счетчиков
- for (razdel=0;razdel<21;razdel++)
- all[razdel]=0;
- /*all[0] - промежуточный счетчик, накапливает кол-во символов в текущем
- слове. all[1]-all[19] -число повторов слов соответствующей длины*/
- /*раздел накопления данных в массиве счетчиков*/
- while (smv!=EOF)
- {
- smv=fgetc(f);
- if (smv==' '|smv==13|smv==9|smv=='.'|smv==','|smv==':')
- {
- if (clovo)//если происходило считывание слова
- {
- clovo=0;
- all[all[0]]++;
- all[0]=0;
- }
- razdel=1;//устанавливаем флаг разделителя
- }
- else if (smv=='-')//обрабатываем возможный случай слова с переносом
- {
- int error;
- smv=fgetc(f);
- if (smv==13)//если перенос происходит, обрабатываем
- {
- all[0]=0;//сбрасываем длину слова с переносом
- clovo=0;//восстанавливаем
- razdel=1;//флаги
- while (smv==' '|smv==13|smv==9|smv=='.'|smv==','|smv==':'|smv=='-')
- smv=fgetc(f);
- while (!(smv==' '|smv==13|smv==9|smv=='.'|smv==','|smv==':'|smv=='-'))
- smv=fgetc(f);
- if (error=ungetc(smv,f)==EOF);//возвращаем символ в поток
- {
- printf("Ошибка при работе с потоком\n");
- exit(3);
- }
- }
- else
- {
- if (error=ungetc(smv,f)==EOF);//возвращаем символ в поток
- {
- printf("Ошибка при работе с потоком\n");
- exit(3);
- }
- razdel=1;//устанавливаем флаг разделителя
- }
- }
- else
- {
- all[0]++;
- if (all[0]>20)
- {
- printf("Некорректные данные:слишком длинное слово\n");
- exit(2);
- }
- clovo=1;
- }
- razdel=0;
- }
- all[all[0]]++;//обрабатываем последнее слово
- /*раздел записи результатов в список*/
- return (EXIT_SUCCESS);
- }
Add Comment
Please, Sign In to add comment