С как проверить пустой ли файл
Перейти к содержимому

С как проверить пустой ли файл

  • автор:

Проверка текстового файла на пустоту — C (СИ)

В случае, когда файл пуст, программа всё равно не считает его пустым. Почему это происходит? Как это исправить? Может быть, существует какая-то другая, более эффективная проверка?

g = fopen("Program.txt", "r"); if (feof(g)) < fprintf(f, "%s", "Файл с программой пуст!"); >;

Решение задачи: «Проверка текстового файла на пустоту»

Листинг программы

fseek(g,0,SEEK_END); long pos=ftell(g); if(pos>0) < // файл непустой. rewind(g); . >

Объяснение кода листинга программы

  1. fseek(g,0,SEEK_END); — Эта строка кода перемещает указатель чтения в конец файла.
  2. long pos=ftell(g); — Эта строка кода сохраняет текущую позицию указателя чтения в переменной типа long.
  3. if(pos>0) — Эта строка кода проверяет, не равно ли значение переменной pos нулю. Если это не так, то файл не пуст.
  4. rewind(g); — Эта строка кода возвращает указатель чтения в начало файла.
  5. . — В этой строке кода должна быть дальнейшая обработка данных, но в представленном коде она отсутствует.
  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д

14 голосов , оценка 3.929 из 5

Похожие ответы

  1. Дан текстовый файл, содержащий коэффициенты квадратных уравнений
  2. Напечатать последнюю из самых коротких строк текстового файла
  3. Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст
  4. Напечатать все строки текстового файла, длина которых меньше заданного числа
  5. Удвоить все гласные буквы в текстовом файле
  6. Отобрать данные из текстового файла
  7. Напечатать все слова из текстового файла, состоящие только из латинских букв
  8. Программа по перекодировке текстовых файлов
  9. Как выполнить поиск в текстовом файле?
  10. Определить конец строки в текстовом файле

Все виды студенческих работ на заказ

Проверка файла на пустоту С++

Решаю задачу на определение симметричности массива, ну или является ли полиндромом,иначе говоря. Если симметрична, то вывожу 1, иначе 0. В файле сначала вводится кол-во элементов массива,а потом только последовательность чисел. Проблема в том, что никак не получается корректно проверить файл на пустоту. Если файл полностью пустой — вывести 0. Я использовал и if(!(fin >> number)) fout << 0; и if(fin.tellg() == 0) и другие.
Но ответ в таком случае выводит неккоректно. Даже если ввел симметричную последовательность чисел в файл, выводит 0. Посоветуйте что-то еще.

#include #include using namespace std; bool symmetry(int array[], int begin, int end)< < return (begin >= end) || ((array[begin] == array[end]) && (symmetry(array, begin + 1, end - 1))); > return 0; > int main()< ifstream fin("input.txt"); ofstream fout("output.txt"); int number, count = 0, size, a = 0; if(!(fin >> number)) //проверка на пустоту while(fin >> number) fin.clear(); fin.seekg(0, ios::beg); fin >> number; size = number; int array[size]; if (size == 0) if(size > number; array[count++] = number;> > else< for(int i = 0; i < a-1; i++) > number; array[count++] = number;> > for(int i = 0; i < count; i++)if(symmetry(array, 0, count-1) == true) fout

Отслеживать
задан 21 сен 2022 в 8:17
317 3 3 серебряных знака 13 13 бронзовых знаков

Никак не пойму, где в коде увы пытаетесь проверить файл на пустоту? И что такое пустота? Если в нем, например, одни пробелы или пустые строки, но нет чисел — это пустота?

21 сен 2022 в 8:46
Щас подправлю, а пустой имеется ввиду когда ничего нет в файле. @Harry
21 сен 2022 в 9:45

Ну и что не так? Если файла нет или в нем нет числа - создается output.txt с 0 внутри. А вы что хотите?

21 сен 2022 в 10:08

Ну так он всегда выводит 0. А это мне не нужно. Я хочу чтобы все было корректно. А именно, если я ввел симметрическую последовательность 4 1 2 2 1 (4 - это длин последовательности чисел,т.е 1 2 2 1), то он должен выдать 1, если он не симметричный, выдаст 0. А если файл пустой - выдает 0. Но сейчас он работает не так - он всегда выводит 0. А почему, мне вот это интересно. Как сделать так,чтобы было корректно

21 сен 2022 в 11:20

Да сами посмотрите, вы же как минимум одно число не дочитываете. Грубо говоря, в файле 1 2 3 2 1 , а в массиве 1 2 3 2 .

File. Exists(String) Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Определяет, существует ли заданный файл.

public: static bool Exists(System::String ^ path);
public static bool Exists (string path);
public static bool Exists (string? path);
static member Exists : string -> bool
Public Shared Function Exists (path As String) As Boolean
Параметры
Возвращаемое значение

Значение true , если вызывающий оператор имеет требуемые разрешения и path содержит имя существующего файла; в противном случае — false . Этот метод также возвращает false , если path — null , недействительный путь или строка нулевой длины. Если у вызывающего оператора нет достаточных полномочий на чтение заданного файла, исключения не создаются, а данный метод возвращает false вне зависимости от существования path .

Примеры

В следующем примере определяется, существует ли файл.

string curFile = @"c:\temp\test.txt"; Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist."); 
let curFile = @"c:\temp\test.txt" printfn $"""""" 
Dim curFile As String = "c:\temp\test.txt" Console.WriteLine(If(File.Exists(curFile), "File exists.", "File does not exist.")) 

Комментарии

Метод Exists не следует использовать для проверки пути, он просто проверяет, существует ли файл, указанный в path . Передача недопустимого пути в возвращает Exists . false Чтобы проверить, содержит ли путь недопустимые символы, можно вызвать GetInvalidPathChars метод , чтобы получить недопустимые символы для файловой системы. Можно также создать регулярное выражение, чтобы проверить, является ли путь допустимым для вашей среды. Примеры допустимых путей см. в разделе File.

Сведения о том, существует ли каталог, см. в разделе Directory.Exists.

Имейте в виду, что другой процесс потенциально может выполнить что-то с файлом в период между вызовом Exists метода и выполнением другой операции с файлом, например Delete.

Параметр path может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

Если path описывает каталог, этот метод возвращает false . Конечные пробелы удаляются из path параметра, прежде чем определить, существует ли файл.

Метод Exists возвращает значение false , если возникает какая-либо ошибка при попытке определить, существует ли указанный файл. Это может произойти в ситуациях, в которых возникают исключения, такие как передача имени файла с недопустимыми символами или слишком много символов, сбой или отсутствие диска или если вызывающий объект не имеет разрешения на чтение файла.

Применяется к

См. также раздел

  • Exists(String)
  • Файловый и потоковый ввод-вывод
  • Чтение текста из файла
  • Практическое руководство. Запись текста в файл

С как проверить пустой ли файл

Нравится ресурс?

  • FAQ по С++
  • Онлайн справочник по STL (перевод)
  • Онлайн компилятор (С++ и много других языков)
  • Онлайн компилятор (широкий выбор версий компиляторов С++)
  • Онлайн дизассеблер для x86, ARM/ARM64, PowerPC
  • Онлайн дизассеблер с широким выбором настроек
  • Онлайн IEEE 754 Converter
  • Онлайн тестирование регулярных выражений

Модераторы: Qraizer, Hsilgos

'> Как узнать пустой ли файл

  • Подписаться на тему
  • Сообщить другу
  • Скачать/распечатать тему

Сообщ. #1 , 16.05.11, 13:38

Рейтинг (т): 10

Если использую для работы с файлами fstream

Сообщ. #2 , 16.05.11, 13:56

Рейтинг (т): 530

А что такое "пустой файл"? Состоящий из 1048576 пробелов - это пустой?

Сообщ. #3 , 16.05.11, 14:32

Рейтинг (т): 10

не содержащий текст

Сообщ. #4 , 16.05.11, 14:33

Рейтинг (т): 530

Тьфу ты. Детский сад.
1048576 пробелов - это текст?

Сообщ. #5 , 16.05.11, 14:38

Рейтинг (т): 10

Сообщ. #6 , 16.05.11, 14:39

Рейтинг (т): 530

А EXEшник содержит текст? И если нет, то почему он тогда "пуст"?

Сообщ. #7 , 16.05.11, 14:40

Рейтинг (т): 202

Скрытый текст

а что тогда?? размер файла равен 0? что есть "пустой"?

Сообщ. #8 , 16.05.11, 14:42

Рейтинг (т): 530

maxim84_, читай выше. Если там мегабайт пробелов, то там нет текста, но файл при этом пуст.
koder, дай чёткое определение термина "файл пуст".

Сообщение отредактировано: Qraizer - 16.05.11, 14:42

Сообщ. #9 , 16.05.11, 14:42

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *