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

Функция, проверяющая, является ли текстовый файл пустым - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.64
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
19.03.2011, 16:51     Функция, проверяющая, является ли текстовый файл пустым #1
У меня вопрос: Есть ли в с++ функция возвращающая истину если открытый на чтение txt файл пустой??

Добавлено через 4 минуты
Если нет то есть ли тоже самое для переменной?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2011, 16:51     Функция, проверяющая, является ли текстовый файл пустым
Посмотрите здесь:

C++ Функция, проверяющая попадание точки с заданными координатами в фигуру
C++ Функция, проверяющая сходимость метода Зейделя
Функция проверяющая существование треугольника C++
Фунция, проверяющая, является ли число степенью числа 5 C++
C++ Файл: Скопировать текст в другой текстовый файл файл, но чётные строки должны быть с большой буквы...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
icpu
 Аватар для icpu
276 / 181 / 36
Регистрация: 10.03.2011
Сообщений: 863
Записей в блоге: 2
19.03.2011, 17:01     Функция, проверяющая, является ли текстовый файл пустым #2
C++
1
2
FILE * ept = fopen(filename[], 'r+');//мож чего ещё есть в ней из параметров - непомню
if (feof(ept)) printf("ААААААААААААААААААААа!!!!!!!!!! ГДЕ МОИ СИМВОЛЫ!!!?!?!?!?!!!!1!");(
или

C++
1
2
ifstream file(filename);
if (file.feof()) printf("то же самое");
В смысле переменная? её с нулём сравнивают, если она инициализированна
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.03.2011, 17:04     Функция, проверяющая, является ли текстовый файл пустым #3
icpu, file.eof() но не feof.
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
19.03.2011, 17:43  [ТС]     Функция, проверяющая, является ли текстовый файл пустым #4
вот кусок из проги
C++
1
2
3
4
5
6
7
 ifstream h("C:/Output.txt");
     if (h.is_open()) 
     {
          if (h.eof())
              cout<<"Файл C:/Output.txt пуст\n";
          else
          {
проверку на пустоту файла не проходит хотя файл пуст. В чем проблема?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.03.2011, 17:48     Функция, проверяющая, является ли текстовый файл пустым #5
fenix117, Как вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    std::locale().global(std::locale(""));
ifstream h("C://Output.txt");
         if (h.is_open()) 
         {
             std::string str;
             std::getline(h, str);
                  if (h.eof() && str.empty())
                          cout<<"Файл C:/Output.txt пуст\n";
                  else
                  {
                  }
         }
}
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
19.03.2011, 18:05  [ТС]     Функция, проверяющая, является ли текстовый файл пустым #6
терь случай когда файл пуст робит а когда заполнен выдает ошибку Run-Time Check Failure #3 - The variable 't' is being used without being initialized.
посмотрите плиз мою прогу в чем проблема
лаба6:Реализована задача 1
 количество элементов файла Input.txt– случайное число N записано на первом месте, в файле N+1 число.
 организовано меню для выбора способа заполнения файла
 на экран выведены результаты выполнения задания 1
само задание:
Указать пары соседних элементов данной последовательности, разность между которыми равна 2 и количество таких пар.

Реализована задача 2
 в файле Output.txt – только те числа из файла Input.txt, которые отвечают условиям задания 2
само задание:
В выходную последовательность записать только каждое второе нечётное число

Реализована задача 3
 на экране – только те числа из файла Output.txt, которые отвечают условиям задания 3
само задание:
Найти максимальное число и его порядковый номер
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <fstream>
#include <iostream>
#include <cmath>
#include <string>
#include <ctime>            // для генерации случайных чисел начиная с произвольного числа
using namespace std;
 
int main()
{    
    std::locale().global(std::locale(""));
    setlocale(LC_ALL, "Russian"); 
    int n,key,t,a,a_old,w;
     srand((unsigned)time(NULL));   // для генерации случайных чисел начиная с произвольного числа
     fstream g("C:/Input.txt",ios::out); 
     n=(rand()%21)+10;
     cout<<"Кол-во элементов равно "<<n<<endl;
     do
     {
        cout<<"1-Вводим числа с клавиатуры \n2-Заполняем случайными числами[0;50]\n";
        cin>>key;
     }
     while ((key<1) || (key>2));
     g<<n<<endl;
     if (key==1)
     {
         for (int i=0; i<n; i++) 
         {
             cout<<"Введите "<<i+1<<" элемент ";
             cin>>t;
             g<<t<<endl;
         }
     }
     else
     {
         for (int i=0; i<n; i++) 
         {
             g<<rand()%51<<endl;
         }
     }
     g.close();
     ifstream f("C:/Input.txt");
     w=0;
     if (f.is_open()) 
     {
         cout<<"1 задание\nОтвет:\n";
         f>>n>>a_old>>a;
         if (abs(a_old-a)==2)
         {
             cout<<a_old<<" : "<<a<<endl;
             w++;
         }
         for(int i=0;i<n;i++) 
         {
             a_old=a;
             f>>a;
             if (abs(a_old-a)==2)
             {
                cout<<a_old<<" : "<<a<<endl;
                w++;
             }
         }
         if (w==0)
             cout<<"Таких пар нет \n";
         else
             cout<<"Кол-во пар равно "<<w<<endl;
         f.close();
     }
     else
         cout<<"Файл C:/Input.txt не был открыт на чтение ";
     ifstream d("C:/Input.txt");
     fstream s("C:/Output.txt",ios::out); 
     if (d.is_open()) 
     {
         d>>n;
         cout<<"2 задание\nОтвет в файле C:/Output.txt\n";
         key=0;
         for (int i=0; i<n; i++)
         {
             d>>a;
             if (a%2==1)
             {
                 if (key==1)
                 {
                     s<<a<<endl;
                     key=0;
                 }
                 else
                     key++;
             }
         }
         d.close();
         s.close();
     }
      else
         cout<<"Файл C:/Input.txt не был открыт на чтение ";
     ifstream h("C:/Output.txt");
     if (h.is_open()) 
     {
          std::string str;
          std::getline(h, str);
          if (h.eof() && str.empty())
              cout<<"Файл C:/Output.txt пуст\n";
          else
          {
              h>>n>>a_old;
              w=1;
              while (h>>a)
              {
                  w++;
                  if (a>a_old)
                  {
                      a_old=a;
                      t=w;
                  }
              }
              cout<<"3 Задание\nОтвет:\nМаксимальное число равно "<<a_old<<". Его номер равен "<<t<<endl;
          }
         h.close();
     }
     else
          cout<<"Файл C:/Input.txt не был открыт на чтение ";
     system("pause");
     return 0;   
}
кому интересно ниже сама лаба у меня 15 вариант)
Вложения
Тип файла: doc Лабораторная работа 6.doc (88.0 Кб, 65 просмотров)
Yandex
Объявления
19.03.2011, 18:05     Функция, проверяющая, является ли текстовый файл пустым
Ответ Создать тему
Опции темы

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