Дан текстовый файл. Вывести в другой файл самые длинные слова текста - 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;
}