Segue abaixo o código completo:
MAIN:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "impressoras.h"
int main(){
char *str;
char divisor[] = "\n********************************************************************************";
Fila *f;
int i = 0;
Imp imp1;
printf("%s ************************ Gerenciador de Impressao ************************%s",
divisor, divisor);
inicializaImpressora(&imp1);
imprimeImpressora(imp1, 1);
system("PAUSE"
return 0;
}
Impressoras.h
//Tipo estruturado de uma impressora
typedef struct impressora Imp;
//Tipo estruturado de um arquivo contido na fila
typedef struct arquivos Arq;
//Tipo estruturado da fila de arquivos
typedef struct fila Fila;
//Função que inicializa a fila de impressão
Fila* iniciarFila();
//Função que insere um arquivo na fila de impressão
void filaInsereArquivo(Fila* f, FILE *a);
//Função que verifica se a fila de impressão está vazia
int filaVazia(Fila* f);
//Função que retira um arquivo da fila de impressão
FILE* filaRetiraArquivo(Fila* f);
//Função que inicializa uma impressora
void inicializaImpressora(Imp *imp1);
//Função que concatena um caractere do arquivo na string da impressora
void concatenaImpressora(Imp* imp1, FILE *fo);
//Função que imprime o estado e a string de uma impressora
void imprimeImpressora(Imp *imp1, int i);
Impressoras.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Tipo estruturado de uma impressora
typedef struct impressora{
char str[400];
int estado; //Aqui é configurado o estado da impressora. 0 para desabilitada 1 para habilitada
}Imp;
//Tipo estruturado de um arquivo contido na fila
typedef struct arquivos{
FILE *arq;
struct fila* prox;
}Arq;
//Tipo estruturado da fila de arquivos
typedef struct fila{
Arq *ini;
Arq *fim;
}Fila;
//Função que inicializa a fila de impressão
Fila* iniciarFila(){
Fila *f = (Fila*)malloc(sizeof(Fila));
f->ini = f->fim = NULL;
return f;
}
//Função que insere um arquivo na fila de impressão
void filaInsereArquivo(Fila* f, FILE *a){
Arq *fo = (Arq*)malloc(sizeof(Arq)); //Aloca nó para novo arquivo da fila
fo->arq = a; //Armazena o arquivo no novo nó
fo->prox = NULL; //Passa o novo nó para última posição da fila
if(f->fim != NULL) //Verifica se a Fila não estava vazia
f->fim = fo;
else
f->ini = fo;
f->fim = fo; //Fila aponta para novo elemento
}
//Função que verifica se a fila de impressão está vazia
int filaVazia(Fila* f){
return (f->ini==NULL);
}
//Função que retira um arquivo da fila de impressão
FILE* filaRetiraArquivo(Fila* f){
Fila *t;
FILE *fo;
if(filaVazia(f)){
printf("\nFila Vazia!"
system("PAUSE"
exit(1);
}
t->ini = f->ini;
fo = t->ini->arq;
f->ini = t->ini;
if(f->ini == NULL)
f->fim = NULL;
free(t);
return fo;
}
//Função que inicializa uma impressora
void inicializaImpressora(Imp *imp1){
int i;
printf("Teste"
imp1->estado = 0;
printf("Teste"
for(i = 0; i < 400 ; i++){
imp1->str[i] = ' ';
printf("Teste"
}
}
//Função que concatena um caractere do arquivo na string da impressora
void concatenaImpressora(Imp* imp1, FILE *fo){
}
//Função que imprime o estado e a string de uma impressora
void imprimeImpressora(Imp *imp1, int i){
char divisor[] = "\n--------------------------------------------------------------------------";
if(imp1->estado == 0)
printf("\nImpressora %d = Desabilitada"
else
printf("\nImpressora %d = Habilitada"
printf("%s%s%s\n", divisor, divisor, imp1->str);
}