Программа для нахождения самого длинного слова в тексте - Запись символа в конец строки - C (СИ)
Формулировка задачи:
Работающая программа для нахождения самого длинного слова в тексте. Но хотелось бы, чтобы она параллельно записывала самое длинное слово.
Думал задать пустую строку и туда записывать символы по порядку вот на этом моменте:
Но реализовать не могу...
if (((ch >= 'A')&&(ch <= 'Z')) || ((ch >= 'a')&&(ch <= 'z')))
{
bword = 1;#include <stdio.h>
unsigned short main()
{
FILE *fl;
char ch;
unsigned char bword;
unsigned char maxword = 0;
unsigned char lenword = 0;
fl = fopen("Ekz1.txt","r");
if (fl == NULL)
{
perror("Error in opening file");
return(-1);
}
while (!(feof(fl)) )
{
ch=fgetc(fl);
if (((ch >= 'A')&&(ch <= 'Z')) || ((ch >= 'a')&&(ch <= 'z')))
{
bword = 1;
}
else
bword = 0;
if (bword == 1)
lenword+=1;
else if((bword == 0)&&(lenword != 0)&&(lenword >= maxword))
{
maxword = lenword;
lenword = 0;
sf[50]=st[50];
st[50]=" ";
}
else lenword = 0;
}
printf("%d", maxword);
fclose(fl);
return (0);
}Решение задачи: «Программа для нахождения самого длинного слова в тексте - Запись символа в конец строки»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fl;
char ch, st[80] = "", sf[80] = "";
int maxword = 0, bword = 0, lenword = 0, i = 0;
fl = fopen("file1.txt","r");
if (fl == NULL){
perror("Error in opening file");
return(1);
}
while(1){
ch=fgetc(fl);
if (((ch >= 'A')&&(ch <= 'Z')) || ((ch >= 'a')&&(ch <= 'z'))){
bword = 1;
st[i] = ch;
++i;
lenword++;
}
else
bword = 0;
if(!bword || !ch){
if(lenword > maxword){
maxword = lenword;
sf[maxword] = '\0';
for(i = maxword - 1; i >= 0; --i)
sf[i] = st[i];
}
i = 0;
lenword = 0;
}
if(ch == EOF)break;
}
printf("%d\n", maxword);
puts(sf);
fclose(fl);
return (0);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Открываем файл для чтения
- Проверяем успешность открытия файла
- При успешном открытии файла, начинаем чтение символов из него
- Проверяем каждый символ на принадлежность к слову
- Если символ принадлежит слову, увеличиваем счетчик слова и записываем символ в строку
- Если символ не принадлежит слову, сбрасываем счетчик слова и очищаем строку
- Если слово закончено (достигнут конец файла или пробел), проверяем длину слова
- Если длина слова больше максимальной, обновляем максимальную длину и копируем слово в строку максимальной длины
- Сбрасываем счетчик слова и длину слова, продолжаем чтение файла
- Закрываем файл после окончания чтения
- Выводим на экран длину максимального слова и само максимальное слово