segunda-feira, 26 de outubro de 2015

Arquivo - informando tamanho

Em linguagem c temos três indicadores para deslocamento de posições,
que são, as funções fseek, ftell e rewind, todas são do cabeçalho stdio.h
são também muito utilizadas em manipulações de arquivos.
Neste texto falaremos um pouco da função ftell;

A função ftell determina a posição atual de um ponteiro em um dado arquivo. Sua
sintaxe é:
long int ftell ( FILE *ponteiro para o arquivo );
A função ftell devolve o valor do indicador de posição do ficheiro indicado.
Para os fluxos binários, o valor devolvido representa a distância em bytes
a partir do princípio da informação armazenada. Para os fluxos de texto,
o valor devolvido contém um valor, que
depende da implementação e que pode ser usado posteriormente por uma invocação de
fseek para posicionamento do indicador de posição do ficheiro na mesma posição. A
função devolve o valor do indicador de posição do ficheiro, em caso de sucesso,
e o valor ??1L, em caso de erro. No caso de insucesso,
a causa é sinalizada na variável global de erro
errno.

Veja abaixo uma imagem do programa em execução:



Veja abaixo o código do programa:



#include <stdio.h>
#include <string.h>
#include<conio.h>
#define SI_ZE 753
void Moldura ( int a , int c , int b , int d , int e , int f ) {
     textbackground ( WHITE );
     for ( a = e; a <= c ; a++ )
         for ( b = f; b <= d ; b++ ) {
              gotoxy ( b , a );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int main ( ) {
     Moldura ( 2 , 29 , 2 , 78 , 2 , 3 );
     system ( "title ARQUIVO - INFORMANDO TAMANHO" );
     int a = 0, i = 0, tam, tp = 0, nl = 0, nc = 0, ini = 0;
     char *cr = 0;
     cr = ( char* ) malloc ( 10 );
     char **Nomes;
     char **line;
     line = ( char** ) malloc ( SI_ZE * sizeof(char*) );
     FILE *arq;
     Nomes = ( char** ) malloc ( SI_ZE * sizeof(char*) );
     if ( ( arq = fopen ( "C:\\Users\\Lima 32 SP1\\Desktop\\Arquivos\\"
              "Concurso Belas da informática.txt" , "r" ) ) == NULL ) {
         printf ( "Houve um erro na abertura do arquivo" );
         getche ( );
         exit ( 1 );
     }
     textcolor ( LIGHTRED );
     gotoxy ( 29 , 3 );
     printf ( "ARQUIVO - IMFORMANDO TAMANHO" );
     for ( i = 0; i < 16 ; i++ ) {
         line [ i ] = ( char* ) malloc ( SI_ZE * sizeof(char) );
         fgets ( line [ i ] , 80 , arq );
     }
     for ( i = 0; i < 16 ; i++ ) {
         Nomes [ i ] = ( char* ) malloc ( SI_ZE );
         Nomes [ i ] = line [ i ];
         a = i;
         textcolor ( LIGHTRED );
         gotoxy ( 13 , a + 5 );
         printf ( "%d" , a );
         textcolor ( LIGHTBLUE );
         gotoxy ( 19 , i + 5 );
         printf ( "%s" , Nomes [ i ] );
     }
     fclose ( arq );
     getche ( );
     char arquivo [ 35 ] = "Concurso Belas da informática.txt";
     arq = fopen ( arquivo , "r" );
     if ( ( arq =
              fopen (
                        "C:\\Users\\Lima 32 SP1\\Desktop\\Arquivos\\Concurso Belas da informática.txt" ,
                        "r" ) ) == NULL ) {
         printf ( "Houve um erro na abertura do arquivo" );
         getche ( );
         exit ( 1 );
     }
     while ( !feof ( arq ) ) {
         fread ( cr , 1 , 1 , arq );
         nc++;
         if ( ( *cr != ' ' ) && ( *cr != '\n' ) && ( !ini ) ) {
              ini = 1;
         }
         if ( ( ( *cr == ' ' ) || ( *cr == '\n' ) ) && ( ini ) ) {
              ini = 0;
              tp++;
         }
         if ( *cr == '\n' ) {
              nl++;
         }
     }
     tam = ftell ( arq );
     gotoxy ( 21 , 22 );
     printf ( "O tamanho do arquivo é: %d" , tam );
     gotoxy ( 21 , 23 );
     printf ( "O número de palavras do arquivo é: %d" , tp );
     gotoxy ( 21 , 24 );
     printf ( "O número de linhas do arquivo é: %d" , nl );
     gotoxy ( 21 , 25 );
     printf ( "O número de caracteres do arquivo é: %d" , nc );
     fclose ( arq );
     Sleep ( 1800 );
     textbackground ( WHITE );
     textcolor ( LIGHTBLUE );
     gotoxy ( 17 , 27 );
     printf ( "Por: " );
     textcolor ( LIGHTMAGENTA );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 17 , 28 );
     printf ( "sa_sp10@hotmail.com" );
     Sleep ( 1800 );
     textcolor ( LIGHTRED );
     gotoxy ( 36 , 29 );
     printf ( "MUITO OBRIGADO" );
     getch ( );
     exit ( 0 );
     getche ( );
}
 

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.