[C] Arquivos e Stat
Publicado por Enzo de Brito Ferber (última atualização em 23/09/2010)
[ Hits: 6.688 ]
Homepage: http://www.maximasonorizacao.com.br
Programa simples mostrando como usar a função stat(), e como manipular aquivos de uma forma bem simples. Ponteiros também são usados.
Baixe:
$ tar -xzvf loadfile.tar.gz
$ cd loadfile
$ ./loadfile text
;)
[]'s
/* loadfile.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> int main ( int argc, char *argv[] ) { char *fullfile, *p, *p2, c ; struct stat fileinfo; FILE *openfile; if ( argc < 2 ) { printf ( "[*] Usage: %s <file>\n", argv[0] ); exit ( EXIT_FAILURE ); } /* read-binary permission */ openfile = fopen ( argv[1], "rb" ); if ( !openfile ) { printf ( "[*] Can't open file %s\n", argv[1] ); exit ( EXIT_FAILURE ); } /* file info for file size */ if ( stat ( argv[1], &fileinfo ) == -1 ) { printf ( "[*] Can't stat() file %s\n", argv[1] ); exit ( EXIT_FAILURE ); } /* alloc memory for the pointer * * fileinfo.st_size = size of the file in bytes */ fullfile = ( char * ) malloc ( fileinfo.st_size * sizeof ( char )); if ( !fullfile ) { printf ( "[*] Can't malloc() %d bytes\n", fileinfo.st_size ); exit ( EXIT_FAILURE ); } /* To view all the resources of the stat structure: * * $ man stat */ printf ( "File info:\n" ); printf ( "UID : %d\n", fileinfo.st_uid ); printf ( "GID : %d\n", fileinfo.st_gid ); printf ( "Size: %d bytes\n", fileinfo.st_size ); printf ( "Mode: %8.8x\n", fileinfo.st_mode ); /* reference pointer */ p = fullfile; while ( 1 ) { if ( feof ( openfile )) break; fscanf ( openfile, "%c", &(*(p++)) ); } /* print file */ p2 = fullfile; while ( fullfile < p ) putchar ( *(fullfile++) ); /* put back in place what you use */ free ( p2 ); fclose ( openfile ); return 0; }
Conversão integral de textos em letras maiúsculas
Contando a quantidade de palavras de um arquivo texto
leitura/escrita de dados/estruturas em arquivo
Programa para inversão de colunas
FileCopy - Copiador de Arquivo de Texto
Nenhum comentário foi encontrado.
Comando du - encontrando as maiores pastas e arquivos no Linux
Instalação do Gentoo GNU/Linux em um SSD NVMe (UEFI/GPT)
Adicionar mensagens iniciais no terminal nas sessões de sudo
Como instalar o player de músicas Amarok 1.4.10 no Ubuntu 20.04
Definindo um Título para o Terminal do Linux
FreeOffice - Ocorreu o erro interno (-105). Tente novamente mais tarde [RESOLVIDO]
Arquivo Suspeito no Ubuntu descoberto pelo rkhunter (4)
Posso apagar um arquivo inode_xxx enorme? (0)
como eu posso juntar um nvme e um pendrive em um so? com o gparted? (2)