Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 137, средняя оценка - 4.80
ganjawar
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 40
#1

Функция feof(stream) зацикливается и не доходит о конца файла - C++

13.09.2011, 20:01. Просмотров 20568. Ответов 22
Метки нет (Все метки)

Здравствуйте
Проблема в том что функция зацикливается,не доходит до конца файла
вот код
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
void crypt(WIN32_FIND_DATAA FindFileData,LPCSTR Dir)
{
        FILE *stream;
        char path[20]={0};
 
        if ((strcmp(FindFileData.cFileName,"..")==0) || (strcmp(FindFileData.cFileName,".")==0))//нужен только файл
        {
            std::cout << FindFileData.cFileName << "\n";
        }else
        {
            strcpy(path, Dir);
            path[strlen(path)-1]=0; //удаляем "*"
            strcat(path, FindFileData.cFileName);//склеиваем путь и имя файла
            stream = fopen(path,"r+");
            //std::cout << path << "\n";
            if (stream!=NULL)//если есть что считывать
            {
                while ( !feof(stream))//пока не конец файла
                {
                    
                }
            }
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2011, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция feof(stream) зацикливается и не доходит о конца файла (C++):

Перебор файла посимвольно, как организовать цикл, работающий до конца файла. - C++
Нужно перебрать файл посимвольно и, учитывая спецсимволы записать содержимое файла в Memo1. Помогите пожалуйста организовать цикл...

Рекурсивная функция, выписывающая число с конца - C++
Доброго Времени суток , Как написать рекурсирную функцию, которая выписывает число с конца например я ввел число --1234 выводит...

Программа не доходит до конца файла и зацикливается - C (СИ)
она не видит конца файла и зацикливается на 21 или на 30 строчке... Программа должна удалить все слова из файла, начинающиеся на согласную....

Прогресбар не доходит до конца - C#
Есть код: private void timer1_Tick(object sender, EventArgs e) { progressBar1.PerformStep(); if...

Программа не доходит до конца - C (СИ)
Программа не доходит до конца.В чем может быть ошибка? Иногда запрашивает ввод только а и высчитывает непонятно что #include &lt;stdio.h&gt; ...

Дефрагментация не доходит до конца - Windows XP
Когда делаешь дефрагментацию, всегда хочется увидеть идеальную непрерывную синюю полосу, а после неё - такую же непрерывную белую. Но, увы,...

22
ganjawar
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 40
15.09.2011, 15:33  [ТС] #16
вместо qwerty получается rxxxxxxw и при чем все зацикливается..это получилось в результате отладки

Добавлено через 14 минут
как Я понял в режиме отладки ,что первый символ меняет нормально,а начиная со 2-го он берет символ меняет его ,а который был вставляет вместо следующего и получается бесконечно один и тот же символ
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
15.09.2011, 15:43 #17
Чуть-чуть подправил
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main(int argc, char* argv[])
{
   int c;
   fstream f;
   streampos pos;
   f.open("doc.txt");
   if (!f.is_open())
      return 1;
   while ((c = f.get()) != EOF)
   {
      cout << (char)c <<"\t";
      c = c+1;
      cout << (char)c <<"\n";
      pos = f.tellp();
      f.seekp(pos-1);
      f.put((char)c);
      f.tellp();
   }
   f.close();
   system("pause");
   return 0;
}
1
ganjawar
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 40
15.09.2011, 15:51  [ТС] #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
std::fstream file(path);
            if (file.is_open())//если файл открыт
            {
                    int c;
                    streampos pos;
                    while ((c = file.get()) != EOF)
                    {
                    /*что нибудь делаем с считаными символом*/
                        std::cout << c <<"\t";
                        c = c+1;
                        std::cout << c <<"\n";
                        pos = file.tellp();
                        file.seekp(pos-1);
                        file.put((char)c);
                        file.tellp();
 
                    }
            }
ругается на (pos-1)
4 IntelliSense: существует несколько операторов "-", соответствующих этим операндам: c:\documents and settings\admin\рабочий стол\os_1\os_1\main.cpp 58 21 OS_1

Добавлено через 1 минуту
Ошибка 4 error C2666: std::fpos<_Statetype>::operator -: для 3 перегрузок есть подобные преобразования c:\documents and settings\admin\рабочий стол\os_1\os_1\main.cpp 58 1 OS_1
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
15.09.2011, 16:09 #19
Цитата Сообщение от ganjawar Посмотреть сообщение
file.seekp(pos-1);
C++
1
file.seekp((int)pos-1);
0
ganjawar
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 40
15.09.2011, 16:12  [ТС] #20
опять на 2-м символе зацикливается
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
15.09.2011, 16:23 #21
Мда.. с указателем в файле надо играться осторожно(
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(int argc, char* argv[])
{
   int c;
   fstream f;
   streampos pos;
   f.open("doc.txt");
   if (!f.is_open())
      return 1;
   while ((c = f.get()) != EOF)
   {
      cout << (char)c <<"\t";
      c = c+1;
      cout << (char)c <<"\n";
      pos = f.tellp();
      f.seekp((int)pos-1);
      f.put(c);
      f.seekp(pos);
   }
   f.close();
   system("pause");
    return 0;
}
1
ganjawar
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 40
15.09.2011, 16:50  [ТС] #22
Спасибо большое,всё работает
0
aaprocky
0 / 0 / 0
Регистрация: 04.05.2017
Сообщений: 3
23.05.2017, 23:34 #23
kazak, а если у меня в файле есть символ конца файла (), и программа на этом останавливается, как быть?
0
23.05.2017, 23:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2017, 23:34
Привет! Вот еще темы с ответами:

Цикл не доходит до конца - C#
Здравствуйте! Не могу разобраться, почему цикл for не доходит до конца. Ниже я привел код, за любой ответ буду благодарен. Где keys.Count -...

Не доходит скролл до конца Jscrollpane - jQuery
Здравствуйте, вот пример http://dodi.vv.si . Скролл не доходит до конца, я так его вроде как отстилизировал, причина как я понял в js,...

Звук на ноутбуке. Регулятор звука не доходит до конца - Ноутбуки
Имеется ноутбук MSI cx620 Вместе с ним имеется и проблема с громкостью звука. Еле слышно звук на максимальных настройках. На картинке...

Текст на мобильных устройствах не доходит до конца блока и переносится раньше - HTML, CSS
Сайт s-vanna.ru некорректно открывается на андроиде. Текст на обычных устройствах разъезжается по всей длине центрального блока, а вот на...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.