Advertisement
sconetto

Questão 1 - SENADO (C)

Sep 5th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.72 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #define COLUMN 40
  5. #define SIZE 44
  6.  
  7. // Função que abre o arquivo e retorna o ponteiro com o endereço do buffer do arquivo
  8. FILE* open_file(FILE *infile) {
  9.     infile = fopen("./entrada.txt","r+");
  10.     if (infile == NULL) {
  11.         printf("Não foi possível abrir o arquivo!");
  12.     }
  13.     return infile;
  14. }
  15.  
  16. // Função para imprimir a primeira e a última linha da saída
  17. void print_line() {
  18.     int column = COLUMN;
  19.     int counter = 0;
  20.     for(counter = 0; counter < COLUMN; ++counter) {
  21.         printf("*");
  22.     }
  23.     printf("\n");
  24. }
  25.  
  26. // Função principal
  27. void main () {
  28.     // Declaração das variáveis estáticas e alguns auxiliares
  29.     char file_char;
  30.     FILE *infile;
  31.     int counter = 0;
  32.     int i = 0, j = 0;
  33.     int aux = 40;
  34.  
  35.     // Setando o local para pt-BR para que a função fgetc entenda caracteres com acento
  36.     setlocale(LC_ALL, "Portuguese");
  37.  
  38.     // Abrindo o arquivo
  39.     infile = NULL;
  40.     infile = open_file(infile);
  41.    
  42.     // Contando quantos caractes tem o arquivo e depois voltando o buffer para a posição inicial do arquivo
  43.     while(fgetc(infile) != EOF) {
  44.         counter++;
  45.     }
  46.     rewind(infile);
  47.  
  48.     // Imprime a primeira linha da saída
  49.     print_line();
  50.  
  51.     // Percorrendo todos os caracteres e imprimindo-os, quando o contador chega a 40 colunas pula para a próxima linha
  52.     for(i = 0; i < counter; ++i) {
  53.         printf("* ");
  54.         while(j < 40) {
  55.             file_char = fgetc(infile);
  56.             // Ignorando as quebras linhas para não serem impressas
  57.             if (file_char == '\n') {
  58.                 continue;
  59.             }
  60.             if (file_char == EOF) {
  61.                 break;
  62.             }
  63.             printf("%c", file_char);
  64.             i++;
  65.             j++;
  66.         }
  67.         j = 0;
  68.         printf(" *\n");
  69.     }
  70.     // Imprime a última linha da saída
  71.     print_line();
  72.     // Termina a execução
  73.     return;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement