arquivo de saída em PGM

arquivo de saída em PGM

por Liliane Machado -
Número de respostas: 5

Oi!!

  Assim, por que que a função read_pgm e write_pgm são int?? o que elas devem devolver?? e mais uma coisa, na função write_pgm como eu faço para que o meu arquivo de saída seja PGM??

Desde já, muito obrigada!

Liliane.

 
Em resposta à Liliane Machado

Re: arquivo de saída em PGM

por Francisco Reverbel -
Oi Liliane,

De fato o enunciado não diz o que as funções read_pgm e write_pgm devem devolver... O int que elas devolvem pode servir para informar quem chamou read_pgm ou write_pgm que a leitura ou a escrita foi bem sucedida, ou para innformar que houve algum problema (por exemplo: a chamada a fopen devolveu NULL, ou a função read_pgm leu o arquivo e viu que ele não respeitava o formato PGM).

Acima eu disse que o int devolvido "pode servir", e não que ele "deve servir". Não é obrigatório usar esse int para informar ao chamador o resultado (bem ou mal sucedido) da operação. Uma outra possibilidade é, em caso de operação mal sucedida, tomar todas as ações cabíveis dentro das funções read_pgm e write_pgm. Por exemplo: suponha que a função read_pgm ler um arquivo e perceber que ele não respeita o formato PGM. Duas alternativas:
  1. A função read_pgm devolve um código de erro para quem a chamou. Nesse caso a função main receberia o código de erro. Ela poderia apresentar uma mensagem de erro e encerrar a execução do programa.
  2. Em vez de devolver um código de erro para quem a chamou, a pŕopria função read_pgm apresenta uma mensagem de erro e chama exit(1) para encerrar a execução do programa. Nesse caso não há necessidade da função read_pgm devolver um int.
Para o arquivo de saída ser PGM basta que ele tenha o formato especificado no enunciado: primeiro aparece a "palavra mágica" P2, depois o número de colunas, depois o de linhas, etc.

Em resposta à Francisco Reverbel

Re: arquivo de saída em PGM

por cristine calil kores -

Bom dia...boa tarde. Ou boa noite.

Eu tenho uma duvida prof.

Quando meu programa escreve o arquivo pgm, é indiferente já existir um arquivo (o qual ele abre e escreve em cima) ou nao, e se nao existir, o programa simplesmente cria um arquivo com o nome que o usuário deu pro arquivo de saida, na mesma pasta onde está salvo o ep. É isso mesmo?? Nao precisa existir o arquivo antes?

Obrigada,

Cris

Em resposta à cristine calil kores

Re: arquivo de saída em PGM

por Rodrigo Cordeiro Godoy -
É isso mesmo, Cristine, não precisa existir o arquivo antes, ele cria se necessário e sobreescreve caso já exista.

Há também uma opção do fopen para que você continue escrevendo a partir do final do arquivo, é a opção "a".

Você também pode checar se o arquivo existe antes de escrever em cima dele abrindo ele com a opção "r" e checando se o que é devolvido é NULL, como está no enunciado, mas não é necessário.