/* -------------------------------- myio.c -------------------------------- */ /* ------------------------------------------------ Parte do código do TP2 de 2006 2006-03-10: created by jcr 2006-03-24: rev by jcr - added support for an internal format 2006-04-13: rev by jcr - comments describing formats were corrected ------------------------------------------------ */ #include #include "mydatatype.h" #include "bool.h" /* ------------------------------------------------ O Meu Formato Textual (MFT) para gravação em ficheiro (é apenas uma sugestão, os alunos poderão criar os seus...) primeira linha - identificador/nome do desenho segunda linha - autor terceira linha - data de criação do ficheiro quarta linha - dimensões da matriz na seguinte sintaxe: Linhas = XXXX Colunas = YYYY em que XXXX e YYYY são inteiros restantes linhas - cada linha conterá uma linha do desenho ----------------------------------------------------------- */ /* --- Função de leitura de um desenho previamente gravado em MFT O resultado da função é um booleano: 1 : o desenho foi lido com sucesso 0 : o desenho não foi lido, ocorreu um erro */ boolean LoadMFT( char fnome[], DESENHO d ) /* fnome: nome do ficheiro que se vai carregar d : matriz onde vai ser carregado o desenho */ { FILE *fp; char linha[MAXCOLUNAS+1]; // usada para ler as linhas de comentário int i, j; // variáveis de controlo das linhas e colunas boolean erro=FALSE; // a primeira linha da matriz guardará a dim da imagem fp = fopen(fnome,"r"); if(!fp) return FALSE; // se não se conseguiu abrir o ficheiro // termina-se a execução do programa else { fgets(linha,MAXCOLUNAS+1,fp); /* lê a linha com o identificador e, nesta versão não faz nada com ele */ fgets(linha,MAXCOLUNAS+1,fp); /* faz o mesmo para o autor */ fgets(linha,MAXCOLUNAS+1,fp); /* faz o mesmo para a data */ /* --- leitura das dimensões da matriz --- */ fscanf(fp,"%*[^=]=%d %*[^=]=%d",&d[0][0],&d[0][1]); fgets(linha,MAXCOLUNAS+1,fp); /* limpa o resto da linha */ i=1; while((i<=d[0][0])&&(!erro)) //Enq não se tiverem lido as linhas todas { j=0; while((j