Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

COMO OBTER O FILE-LENGTH EM LINUX EM LINGUAGEM C

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

2 respostas

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!

solução!

Apliquei e testei a solução apresentada. Muito obrigado Lucas Ribeiro.