Форум программистов, компьютерный форум CyberForum.ru

Не нормально зацикливается Do - C++

Восстановить пароль Регистрация
 
Lupus
 Аватар для Lupus
22 / 22 / 1
Регистрация: 13.03.2011
Сообщений: 319
10.09.2011, 19:06     Не нормально зацикливается Do #1
Нужно написать процедуру, которая сравнивает каждое слово из текстового файла с каждым словом из словаря (слова уже забиты в список) и переписывает весь текстовый файл в web-страницу, выделяя слова, которые есть в словаре, жирным и курсивом. Собственно процедура написана, но после определенного момента (когда счётчик k равен 272) вдруг происходит закливание в цикле do.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
void Spisok::Vyvod ()
{
  node *t;
  char buff[256], ch;
  int i, k=0;
  fstream fiT("D:\\user\\bc31\\bc31\\bin\\test.txt", fstream::in);
  fstream fo("D:\\user\\bc31\\bc31\\bin\\index.html", fstream::out);
 
 
  fo << "<html><title>Stranica 1</title><body>\n";
 
  while (!fiT.eof())
  {
        t = (*phead).sled;
        i = 0;
 
        while( isspace( ch = fiT.get() ) )
             {
           if (ch == '\n') fo << "<br>\n";
           else fo << ch;
             }
 
        do                   //   вот тутс
        {
          buff[i++] = ch;
          //cout << i << endl;
        }
        while ( !isspace( ch = fiT.get() ));
        buff[i] = 0;
 
        while (t!=NULL)
        { 
          if (stricmp(buff, (*t).elem)==0)  
          {
              fo << "<b><i>" << buff << "</i></b>";
              if (ch == '\n') fo << "<br>\n";
              else fo << ch;
                  break;
              }
          t = (*t).sled;
          //cout << "oshibko!" << endl;
        }
        if (t==NULL)
        {
          fo << buff;
          if (ch == '\n') fo << "<br>\n";
          else fo << ch;
        }
        cout << k++ << endl;
  }
  fiT.close();
  fo << "</body></html>";
  fo.close();
}
При чём, это не зависит от того, какой символ я считываю из файла.
При попытке посмотреть i или ch в цикле выходит ошибко (см ниже).
Похоже, что что-то переполняется, а что, понять так и не могу

P.S. Пишу в BC3.1 Может в нём косяк?
Миниатюры
Не нормально зацикливается Do  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2011, 19:06     Не нормально зацикливается Do
Посмотрите здесь:

программа зацикливается C++
C++ Почему зацикливается?
Multimap зацикливается C++
C++ Зацикливается программа
Программа зацикливается C++
Зацикливается стек C++
C++ Программа зацикливается
C++ Программа зацикливается

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
10.09.2011, 19:40     Не нормально зацикливается Do #2
Почему ты думаешь, что fiT.get() возвращает char? Если достигается конец файла, то эьа ситуация не обрабатывается.
Lupus
 Аватар для Lupus
22 / 22 / 1
Регистрация: 13.03.2011
Сообщений: 319
10.09.2011, 20:15  [ТС]     Не нормально зацикливается Do #3
Цитата Сообщение от Deviaphan Посмотреть сообщение
Почему ты думаешь, что fiT.get() возвращает char? Если достигается конец файла, то эьа ситуация не обрабатывается.
Условие конечно добавлю, но там точно не конец файла. Содержимое файла менял, а зацикливание всё равно на 272ом k.

Добавлено через 3 минуты
Хм...... я очень удивлен, помогло...
Хотя там реально до конца файла далеко. Спасибо!
Yandex
Объявления
10.09.2011, 20:15     Не нормально зацикливается Do
Ответ Создать тему
Опции темы

Текущее время: 04:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru