Introdução à linguagem C - Parte IV
Nesta continuação da maravilhosa série sobre a linguagem C, apresentaremos o uso de arquivos textos e binários. Como declará-los? Como abrí-los? Como usá-los? São algumas das perguntas que teremos respondidas aqui!
Parte 7: Exemplo 2
O exemplo abaixo é como fazer para capturar informações de algum arquivo
qualquer.
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
//Esta função retorna o ano baseado num calculo feito com os segundos que ela recebe!
int ano(long int segundos)
{
int conta;
segundos/=3600;
for (conta=0;(segundos-=((conta % 4)==0)?(24*360):(24*365))>0;conta++);
return 1970+conta;
}
//programa principal
int main(void)
{
char nome[]="";
struct stat buf;
printf("Informe o arquivo a ser lido: ");
scanf("%s",nome);
stat(nome,&buf);
system("clear");
printf("Sobre o arquivo %s\n\n", nome);
printf("Dispositivo : %lld\n", buf.st_dev);
printf("Inode : %li\n", buf.st_ino);
printf("Proteção : %o\n", buf.st_mode);
printf("Número de links rígidos(hard links) : %u\n", buf.st_nlink);
printf("ID do Dono : %u\n", buf.st_uid);
printf("ID do Grupo do Dono : %u\n", buf.st_gid);
printf("Tipo do Dispositivo : %lld\n", buf.st_rdev);
printf("Tamanho total(bytes) : %li\n", buf.st_size);
printf("Tamanho do Bloco : %li\n", buf.st_blksize);
printf("Numero de Blocos alocados : %li\n", buf.st_blocks);
printf("Último Acesso no ano de %d\n", ano(buf.st_atime));
printf("Última Modificação no ano de %d\n", ano(buf.st_mtime));
printf("Última Alteração no ano de %d\n", ano(buf.st_ctime));
return 0;
}
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
//Esta função retorna o ano baseado num calculo feito com os segundos que ela recebe!
int ano(long int segundos)
{
int conta;
segundos/=3600;
for (conta=0;(segundos-=((conta % 4)==0)?(24*360):(24*365))>0;conta++);
return 1970+conta;
}
//programa principal
int main(void)
{
char nome[]="";
struct stat buf;
printf("Informe o arquivo a ser lido: ");
scanf("%s",nome);
stat(nome,&buf);
system("clear");
printf("Sobre o arquivo %s\n\n", nome);
printf("Dispositivo : %lld\n", buf.st_dev);
printf("Inode : %li\n", buf.st_ino);
printf("Proteção : %o\n", buf.st_mode);
printf("Número de links rígidos(hard links) : %u\n", buf.st_nlink);
printf("ID do Dono : %u\n", buf.st_uid);
printf("ID do Grupo do Dono : %u\n", buf.st_gid);
printf("Tipo do Dispositivo : %lld\n", buf.st_rdev);
printf("Tamanho total(bytes) : %li\n", buf.st_size);
printf("Tamanho do Bloco : %li\n", buf.st_blksize);
printf("Numero de Blocos alocados : %li\n", buf.st_blocks);
printf("Último Acesso no ano de %d\n", ano(buf.st_atime));
printf("Última Modificação no ano de %d\n", ano(buf.st_mtime));
printf("Última Alteração no ano de %d\n", ano(buf.st_ctime));
return 0;
}