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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
bond95
Мы все БОЛЬШАЯ программа
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
#1

бесконечный цикл - C++

26.12.2010, 15:12. Просмотров 1273. Ответов 11
Метки нет (Все метки)

Когда пытаюсь считать строки из файла с помощью цикла, он почему то начинает повторятся бесконечно. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(int argc, char* argv[])
{
 FILE *f3;
 char *name;
 if((f3=fopen("test2.txt","r"))==NULL) {
    return 0;
 }
  while ( fgets(name,25,f3)!=NULL) {  //считывание файла до тех пор пока он не закончится
      std::cout<<"read";
      Sleep(1000);
}
 
 fclose(f3);
    return 0;
}
Помогите найти ошибку пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 15:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос бесконечный цикл (C++):

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Бесконечный цикл - C++
#include &lt;iostream&gt; #include &lt;climits&gt; bool is_int(double); int main() { using namespace std; double num; cout &lt;&lt; &quot;Yo,...

Бесконечный цикл - C++
Как ввести программу в бесконечный цикл на C++ ? Смотрел видео где делали бесконечный цикл (НО!) это было на Small Basic'е, а мне нужно...

Бесконечный цикл - C++
Задача: Дед Мазай спасает зайцев. На N островках находится некоторое количество зайцев разной массы. Грузоподъемность лодки Мазая...

Бесконечный цикл - C++
#include &lt;iostream&gt; using namespace std; int main() { int i=0; double ea; while(i!=-1) { ...

Бесконечный цикл - C++
Задача: Ввести количество камней, ввести вес каждого камня, сложить камни в 2 кучки так чтобы разница между общими массами кучек были...

11
IROKEZ
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 19
26.12.2010, 15:46 #2
попробуйте переделать условие конца цикла, а именно
C++
1
2
3
while(!feof(f3))
{
}
0
bond95
Мы все БОЛЬШАЯ программа
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
26.12.2010, 15:54  [ТС] #3
получается тоже самое
0
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
26.12.2010, 16:05 #4
C++
1
while ( fgets(name,25,f3)!=NULL)
Может всё таки
C++
1
while ( fgets(name,25,f3)!=EOF)
0
IROKEZ
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 19
26.12.2010, 16:05 #5
bond95,
Сейчас глянул свои исходники (похожие задачи были), попробуйте вместо !=NULL поставить !=EOF
0
bond95
Мы все БОЛЬШАЯ программа
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
26.12.2010, 16:17  [ТС] #6
Теперь вообще компилироваться не хочет. Пишет:
D:\Bogdan\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\backward\backward_warning.h|32|war ning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.|
C:\Users\Ya\Documents\RAD Studio\Projects\test.cpp||In function `int main(int, char**)':|
C:\Users\Ya\Documents\RAD Studio\Projects\test.cpp|20|error: ISO C++ forbids comparison between pointer and integer|
||=== Build finished: 1 errors, 1 warnings ===|
0
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
26.12.2010, 16:39 #7
Сорри, тут правильно. Должно быть !=NULL.
При достижении конца файла функция возвращает NULL

Добавлено через 5 минут
да Вы указателю name ничего не присвоили

Добавлено через 2 минуты
name - указатель на строку символов, но адреса строки Вы в него не записали. Бесконечного цикла тут нет
1
bond95
Мы все БОЛЬШАЯ программа
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
26.12.2010, 16:42  [ТС] #8
А что я должен присвоить?

Добавлено через 2 минуты
Все заработало, вот только оно почему то только одну строку читает.
0
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
26.12.2010, 16:48 #9
Указатель - это адрес ячейки в памяти. Вы его только объявили, и он у Вас равен NULL, так как еще никуда не указывает. То есть Вы должны либо выделить память под строку, либо просто, не заморачиваясь, вместо char *name, пишите char name[256], то есть объявите символьную строку, размером в 256 символов
1
bond95
Мы все БОЛЬШАЯ программа
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
26.12.2010, 16:54  [ТС] #10
все работает спасибо
0
RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
26.12.2010, 16:59 #11
Он читает не одну строку, а все строки, но загоняет их в одну строковую переменную, перезаписывая ячейки, и в конце добавляя \0, таким образом при попытке вывести содержание name на экран, Вы получаете только последнюю строку. Что именно Вы хотите сделать? Какова цель программы?
0
bond95
Мы все БОЛЬШАЯ программа
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
26.12.2010, 21:08  [ТС] #12
Я хочу сделать эмулятор файловой системы.
0
26.12.2010, 21:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2010, 21:08
Привет! Вот еще темы с ответами:

Бесконечный цикл - C++
Здравствуйте. Программа должна принимать некоторые значения, обрабатывать их и выдавать в виде статистики (нарисовать звездочками). ...

Бесконечный цикл - C++
Народ помогите у меня зациклился цикл. Что я сделал не так вроде условие выхода есть или может другой цикл использовать? Использовал do -...

Бесконечный цикл - C++
Есть бесконечный цикл,благодаря которому постоянно вызываются функции. Из за этого бесконечного цикла глючит программу. Есть ли другой...

Бесконечный цикл - C++
Ребят, что-то цикл выполняется постоянно. Покажите ошибку мне/ #include &lt;iostream&gt; using namespace std; int main() { ...


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

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

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