Venho utilizando as input-output system calls (creat,open,close,read e write) na manipulação de arquivos. Teriam um exemplo de como obter o tamanho de um arquivo através delas? Grato
Venho utilizando as input-output system calls (creat,open,close,read e write) na manipulação de arquivos. Teriam um exemplo de como obter o tamanho de um arquivo através delas? Grato
Olá, Alberto!
Para obter o tamanho de um arquivo em linguagem C, você pode usar a função lseek()
. Essa função move o indicador de posição do arquivo e retorna a posição atual do indicador de posição do arquivo.
Aqui está um exemplo prático:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main() {
int fd;
off_t size;
fd = open("meu_arquivo.txt", O_RDONLY);
if (fd == -1) {
// Trate o erro aqui
}
size = lseek(fd, 0, SEEK_END);
if (size == (off_t) -1) {
// Trate o erro aqui
}
close(fd);
return 0;
}
Neste exemplo, abrimos o arquivo "meu_arquivo.txt" para leitura e usamos lseek()
para mover o indicador de posição para o final do arquivo. A função lseek()
retorna a posição atual, que é o tamanho do arquivo em bytes.
Por favor, lembre-se de tratar os erros corretamente em seu código. No exemplo, eu apenas comentei onde você deve tratar os erros, mas na prática, você deve implementar a lógica para lidar com os erros.
Espero ter ajudado e bons estudos!
Apliquei e testei a solução apresentada. Muito obrigado Lucas Ribeiro.