Как правильно определять размер файла в c?

Пользователь

от rudolph_senger , в категории: C/C++ , 2 года назад

Как правильно определять размер файла в c?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от quinton.prosacco , 2 года назад

@rudolph_senger 

Для определения размера файла в языке программирования C можно использовать функцию fseek() и ftell().


Первым шагом нужно открыть файл с помощью функции fopen(). Затем можно переместить указатель текущей позиции в конец файла с помощью функции fseek() и параметра SEEK_END. После этого можно получить текущую позицию указателя с помощью функции ftell(), которая возвращает количество байтов между началом файла и текущей позицией указателя.


Пример кода, который определяет размер файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>

int main() {
   FILE *fp;
   long size;

   fp = fopen("file.txt", "rb"); // открытие файла в бинарном режиме чтения

   if(fp == NULL) {
      printf("Ошибка при открытии файла.
");
      return -1;   
   }

   fseek(fp, 0L, SEEK_END); // перемещение указателя в конец файла
   size = ftell(fp); // получение текущей позиции указателя (размер файла)

   fclose(fp); // закрытие файла

   printf("Размер файла: %ld байт
", size);

   return 0;
}


В этом примере программа открывает файл "file.txt" в бинарном режиме чтения, перемещает указатель текущей позиции в конец файла, получает текущую позицию указателя (размер файла) и закрывает файл. Затем она выводит размер файла в байтах на экран.

Пользователь

от jazmyne , 10 месяцев назад

@rudolph_senger 

Код, представленный выше, демонстрирует один из способов определения размера файла в C. Однако, есть и другие способы для достижения этой цели. Ниже приведены еще несколько способов определения размера файла:

  1. Использование функций stat() или fstat():
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <sys/stat.h>

int main() {
   struct stat st;
   long size;

   if(stat("file.txt", &st) == 0) {
      size = st.st_size;
   } else {
      printf("Ошибка при определении размера файла.
");
      return -1;
   }

   printf("Размер файла: %ld байт
", size);

   return 0;
}


Этот пример использует структуру stat из библиотеки sys/stat.h для получения размера файла с помощью функции stat().

  1. Использование функции fgetc():
 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
#include <stdio.h>

int main() {
   FILE *fp;
   long size = 0;
   int character;

   fp = fopen("file.txt", "r"); // открытие файла в режиме чтения

   if(fp == NULL) {
      printf("Ошибка при открытии файла.
");
      return -1;   
   }

   while((character = fgetc(fp)) != EOF) {
      size++;
   }

   fclose(fp); // закрытие файла

   printf("Размер файла: %ld байт
", size);

   return 0;
}


В этом примере программа открывает файл "file.txt" в режиме чтения, перебирает символы файла с помощью функции fgetc() и считает количество символов, чтобы определить размер файла.


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