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

Как проверить в с++ пуст файл или нет? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Morint_1
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 5
14.11.2013, 15:32     Как проверить в с++ пуст файл или нет? #1
Добрый день! Мне нужно написать программу, которая после открытия файла делает проверку, пуст этот файл или нет. Подскажите, пожалуйста, как это можно сделать на с++?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
14.11.2013, 15:48     Как проверить в с++ пуст файл или нет? #2
Функции библиотеки stdio.h

FILE *fopen(const char *filename, const char *mode)
Функция открывает файл, filename - путь к файлу, mode - тип доступа:
r - чтение, если файла нет, то данная функция генерирует ошибку (возвращает 0)
w - запись, если файла нет, то файл создаётся, если есть исходное содержимое удаляется
a - добавление в конец, если файла нет, то он создаётся
r+ чтение и запись (файл должен существовать)
w+ - чтение и запись (принцип работы как у w)
int feof( FILE *stream )
Функция проверяет достигнут ли конец файла, stream - указатель на открытый файл. Функция возвращает ненулевое значение, если достигнут конец файла, нуль возвращается в противном случае.
int fclose( FILE *stream )
Функция закрывает файл, stream - указатель на закрываемый файл. Если всё проходит успешно, то данная функция возвращает 0, или EOF в случае ошибки.

Достаточно?
Morint_1
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 5
14.11.2013, 16:05  [ТС]     Как проверить в с++ пуст файл или нет? #3
Нет, это не совсем то, всё это я знаю. Мы пишем программу в с++ и открываем файл по-другому. Вот так я пыталась сделать проверку после открытия файла, но она работает неправильно.

bool ReadFileB(const char* fileName){
ifstream f1;
f1.open(fileName,ios_base::in);
if (f1&&f1.is_open()){
if(f1.eof()){
return false;
} else {
return true;
}
} else {
cout << "Ошибка\n";
return false;
}
}

Хочется, чтобы если файл пуст, функция возвращала значение false.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
14.11.2013, 16:33     Как проверить в с++ пуст файл или нет? #4
Цитата Сообщение от Morint_1 Посмотреть сообщение
Хочется, чтобы если файл пуст, функция возвращала значение false.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool ReadFile(const char* fileName)
{
    std::ifstream f(fileName);
    bool isRead = f.is_open();
 
    if (isRead)
    {
        f.seekg(0, std::ios_base::end);
        isRead = (f.tellg() > 0);
    }
 
    return isRead;
}
Morint_1
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 5
14.11.2013, 16:38  [ТС]     Как проверить в с++ пуст файл или нет? #5
anmartex, Спасибо огромное!
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
14.11.2013, 17:55     Как проверить в с++ пуст файл или нет? #6
Ну, еще как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <boost/filesystem.hpp>
 
namespace fs = boost::filesystem;
 
int main()
{
   fs::path path("D:/file.txt");
   if (fs::is_regular_file(path))
      std::cout << fs::is_empty(path) << std::endl;
   else
      return 1;
 
   return 0;
}
Yandex
Объявления
14.11.2013, 17:55     Как проверить в с++ пуст файл или нет?
Ответ Создать тему
Опции темы

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