Imprimir Arquivos Binários em C
Ao desenvolver o meu projecto académico da cadeira de Fundamentos de Programação I/2007, em linguagem C, juntamente com o Nelson Neto, resolvi adicionar a funcionalidade de impressão de registos armazenados em ficheiros binários.
Mas enquanto implementavamos a função deparamo-nos com o facto de que no Sistema Operacional Linux não existe o ficheiro standard stdprn que representa a impressora padrão do sistema no windows. Por isso criamos um ficheiro denomidado IMPRESSORA.txt que recebia os dados a serem imprimidos na impressora padrão, procedimento que descreverei na devida altura.
Para adicionarmos os dados ao ficheiro de impressão analisamos o funcionamento da função fprintf, (fprintf(FILE *fich, const char *format, …) - em que o parâmetro inicial corresponde ao ficheiro onde o processamento será realizado), quando pretende-se apresentar os dados no monitor usando o ficheiro standard stdout.
fprintf(stdout,”Nome: %s”, x.nome);//Surge na tela “Nome: Leivan de //Carvalho”; nome contido em x.nome
Para o nosso caso, usamos o ficheiro IMPRIMIR.txt
fprintf(IMPRIMIR.txt ,”Nome: %s”, x.nome); //Envia-se para o ficheiro //IMPRIMIR.txt “Nome: Leivan de Carvalho”; nome contido em x.nome
Como para cada ficheiro já haviamos criado as suas respectivas funções que permitiam mostrar o seu conteúdo na tela, bastou-nos somente indicar como saída o ficheiro IMPRIMIR.TXT.
//Função mostrar_Inf_pessoal_Cand
//Parâmetros: ficheiro onde serão apresentados os dados e o registo a ser mostrado
void mostrar_Inf_pessoal_Cand( FILE *fp, P_INF_PESSOAL_CAND x )
{
system( “clear” );
getchar();
fprintf( fp, “\n\n\t\t\t *|**|* INFORMACOES PESSOAIS *|**|*\n\n” );
fprintf( fp, “\t\t\t\t\t***\n” );
fprintf( fp, “\tNUMERO REGISTO: %lu\n”,x.num_reg );
fprintf( fp, “\tNumero de aluno: %lu\n”,x.num_aluno );
fprintf( fp, “\tNome: %s”,x.nome );
fprintf( fp, “\tCurso: %s\n”,x.curso );
fprintf( fp, “\tAno: %hu\n”,x.ano_curso );// (…)
}
mostrar_Inf_pessoal_Cand( IMPRIMIR.TXT, P_INF_PESSOAL_CAND x );
Agora, tendo já os dados no ficheiro IMPRIMIR.TXT, bastou-me escrever o código que activasse o processo de impressão. Considerando o comando do LINUX para impressão na impressora padrão (lp arquivo.txt).
Código:
fp4=fopen(”IMPRIMIR.txt”,”wb“);//Abertura do ficheiro em modo de escrita binario
mostrar_Inf_pessoal_Cand(fp4,a);//Escreve a P_inf_familiar em IMPRIMIR.txt
fclose(fp4);//Fecho do ficheiro
system(”lp IMPRIMIR.txt”);//comando ‘lp’ enviar o ficheiro para a impressora padrao
E voila !!! Essas são as 4 linhas mais importantes para o processo de impressão, bastará colocá-las nos locais do seu código em que desejar, com algumas manipulações e funcionará!
Os procedimentos são de minha autoria (gerado em momento de adrenalina devido a “inovação” e tempo escasso lol ), portanto e se existir algum meio menos trabalhoso para se efectuar o processo de impressão gostaria de ter acesso ao mesmo. Por isso, estou aberto a novas informações!

Valeu Leivan, ja mostrei aos putos que deixaram essa cadeira…