#include <stdio.h>
#include <stdlib.h>
#define N 4
int main(int argc, char *argv[])
{
int valores[4][4], i, j;
FILE *saidaTexto, *saidaBinaria;
if(argc != 3)
{
fprintf(stderr, "Tem de passar dois argumentos!\n");
return EXIT_FAILURE;
}
if((saidaTexto = fopen(argv[1], "w")) == 0)
{
fprintf(stderr, "Erro abrindo o ficheiro \"%s\".\n", argv[1]);
return EXIT_FAILURE;
}
if((saidaBinaria = fopen(argv[2], "wb")) == 0)
{
fprintf(stderr, "Erro abrindo o ficheiro \"%s\".\n", argv[2]);
return EXIT_FAILURE;
}
/* Leitura: */
for(i = 0; i < N; i++)
for(j = 0; j < N; j++)
if(scanf("%d", &valores[i][j]) != 1)
{
fprintf(stderr, "Erro lendo elemento [%d][%d]!\n", i, j);
return EXIT_FAILURE;
}
/* Escrita de texto: */
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
fprintf(saidaTexto, "%3d ", valores[i][j]);
fputc('\n', saidaTexto);
}
if(ferror(saidaTexto))
{
fprintf(stderr, "Erro escrevendo ficheiro de texto!\n");
return EXIT_FAILURE;
}
/* Escrita binaria: */
if(fwrite(valores, sizeof(int), N*N, saidaBinaria) != N*N)
{
fprintf(stderr, "Erro escrevendo ficheiro binario!\n");
return EXIT_FAILURE;
}
fclose(saidaTexto);
fclose(saidaBinaria);
return EXIT_SUCCESS;
}