Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение длинны строки из файла 
:(
    Опции темы
R4peMe
Дата 21.2.2011, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 21.2.2011

Репутация: нет
Всего: нет



Помогите пожалуйста написать программу на C, которая в текстовом файле находит самое длинное предложение и выводит его длину в символах и порядковый номер.

в частности интересует чисто алгоритм считывания т.к. я со строками не дружу =\
допустим

Цитата

FILE *ff;
...
fopen("text.txt","r");

я думаю, что удобнее всего делать через while 
может я не прав
заранее спасибо
PM MAIL   Вверх
hawk3500
Дата 21.2.2011, 20:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 6.2.2009

Репутация: нет
Всего: 2



Эта задача сроди обработки HDLC но проще.
Сделайте CreateFile, CreateFileMapping,MapViewOfFile и дальше работайте с файлом как с массивом в памяти.
Дальше всё просто.

Начинайте читать по файлам до тех пор пока не найдёте точку-конец предложения.

Код
char *FILE;
DWORD FileSize;
HANDLE hFile;
HANDLE hFileMapping;
int START_BYTE=0;

int CountNumber=0;
int lenght=0;
int Maxlenght=0;
int tmp=0;
int tmp2=0;

hFile = CreaTeFile(pszFileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
hFileMapping = CreateFileMapping(hFile, NULL, PAGE_WRITECOPY, 0, 0, NULL);
FILE = (char *) MapViewOfFile(hFileMapping, FILE_MAP_COPY, 0, 0, 0);
FileSize=GetFileSize(hFile,0);

while(START_BYTE<FileSize)
{
   if(FILE[START_BYTE]=='.')
   {
      tmp++;
      lenght=START_BYTE-tmp2;//длинна предложения.
      if(lenght>Maxlenght)
      {
          Maxlenght=lenght;
         CountNumber=tmp;
       } 
       START_BYTE++;
       tmp2=START_BYTE;
    }
}



Ну вот как то так.


Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 22.2.2011, 00:09
--------------------
воин dzen'a
PM MAIL   Вверх
bsa
Дата 22.2.2011, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



R4peMe, ни в коем случае не слушай hawk3500. Именно такие люди оказывают медвежьи услуги.

С помощью fgetc читаешь файл посимвольно. Когда встречаешь точку/вопросительный/восклицательный знак, то считаешь, что обнаружен конец предложения, иначе увеличиваешь счетчик символов на 1. Если обнаружен конец предложения, то сравниваешь количество символов с максимально обнаруженным до этого. Если больше, то присваиваешь максимальному текущее, и положению максимального предложения текущее. Текущему положению предложения присваиваешь текущую позицию в файле (ftell).

hawk3500, я рад, что ты знаешь WinAPI. Но это не повод показывать эту порнографию новичкам.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.