#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; }