Дан текстовый файл. Вывести в другой файл самые длинные слова текста - C (СИ)

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

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

Дан текстовый файл. Вывести в другой файл самые длинные слова текста (с учетом знаков препинания, расположенных в начале и в конце слов)

Решение задачи: «Дан текстовый файл. Вывести в другой файл самые длинные слова текста»

textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define STRS 50/*размер стринга*/
#define SPACE ' '/*пробел*/
 
void theLong(char* str){/*функция создающая новый файл+добавляющая в него самые длинные слова*/
    FILE* f;/*файл*/
    int count = 0, max = 0, i = 0, j = 0;/*посчет длины, макс длинна, индексы*/
    char word[STRS] = { '\0' };/*стринг в который мы перепишем слова*/
    f = fopen("new.txt", "w");/*создаем файл для в котором будут храниться самые длинные слова*/
    if (!f){/*проверяем*/
        printf("ERROR!!!\n");
        exit(1);
    }
    fclose(f);/*закрываем*/
    for (i = j; str[i] != '\0'; i++){/*ищет самое длинное слове в стринге*/
        if (str[i] == SPACE)/*если есть пробел то идем на следующий индекс*/
            continue;
        count = 0;/*обнуливаем считалку*/
        for (j = i; str[j] != SPACE&&str[j] != '\0'; j++){/*пока не дошли до конца слова, или до конца стринга*/
            count++;/*продвигаем считалку*/
        }
        if (max < count)/*если есть слово длинее самениваем его размер*/
            max = count;
        i = j;
    }
    f = fopen("new.txt", "a");/*открываем созданый ранее файл для редактирования*/
    if (!f){
        printf("ERROR!!!\n");
        exit(1);
    }
    j = 0;
    for (i = j; str[i] != '\0'; i++){/*теперь ищем те самые длинные слова*/
        if (str[i] == SPACE)
            continue;
        count = 0;
        for (j = i; str[j] != SPACE&&str[j] != '\0'; j++){/*переписываем первое слово в стринг помощи*/
            word[count] = str[j];
            count++;
        }
        if (max == count)/*если размеры максимальны, то печатаем его в наш файл*/
            fprintf(f, "%s ", word);/**/
        for (i = 0; word[i] != '\0'; i++)/*и обнуливаем его*/
            word[i] = '\0';
        i = j;
    }
    fclose(f);/*закрываем файл*/
}
 
int main(){
    FILE* f;/*открываем файл*/
    char str[STRS] = { "\0" };/*создаем стринг*/
    f = fopen("help.txt", "r");/*открываем созданный на пк файл для чтения*/
    if (!f){/*проверяем*/
        printf("ERROR!!!\n");
        exit(1);
    }
    fgets(str, STRS, f);/*переписываем его содержимое в наш стринг*/
    fclose(f);/*закрываем файл*/
    theLong(str);/*шлем в функцию*/
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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