segunda-feira, 1 de abril de 2013

Criando tabela em arquivo HTML usando C

Criando tabelas HTML através da linguagem C

Em uma aula de linguagem de programação, foi proposto o seguinte exercício de lógica:

O usuário deve entrar com a quantidade de linhas e colunas e com estes dados, desenhar um retângulo que a borda é o caracter 'O' e o seu interior é preenchido com 'X'.

Por exemplo, se a entrada fosse 3 linhas e 5 colunas, teríamos:

OOOOO
OXXXO
OOOOO

Assim, tive a ideia de fazer um programa em C que fizesse a estrutura de uma tabela HTML pedindo para o usuário a quantidade de linhas e colunas.

O ponteiro para arquivos ps cria o arquivo tabelas.html e ao invés de usar printf que imprime na tela, usa-se fprintf para imprimir dentro do arquivo.

São necessários dois laços for sendo que o for externo diz respeito à linha e o mais interno, à coluna.

Uma vez que o ponteiro é aberto para escrita, deve-se instruí-lo a fechá-lo e o comando para este fim é o fclose(nome_do_ponteiro). Neste exemplo, fclose(ps).

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,colunas=1, linhas=1, contador=0;
    FILE *ps;

    ps = fopen("tabela.html","w");
    if (ps == NULL)
    {
        printf("Erro na abertura do arquivo");
        exit(0);
    }

    printf("Programa de geracao de tabelas\n\n");
    printf("Digite o numero de linhas da tabela: ");
    scanf("%d",&linhas);
    printf("Digite o numero de colunas da tabela: ");
    scanf("%d",&colunas);

    fprintf(ps,"<html>");
    fprintf(ps,"\n");
    fprintf(ps," <head>");
    fprintf(ps,"\n");
    fprintf(ps,"   <title></title>\n");
    fprintf(ps," </head>");
    fprintf(ps,"\n\n");

    fprintf(ps,"  <body>\n\n");
    fprintf(ps,"  <table>\n");

    for (i=1; i<=linhas;i++)
    {
        for (j=1; j<=colunas+2; j++)
        {
              if (j==1)
                fprintf(ps,"   <tr> ");
              else if (j==colunas+2)
                fprintf(ps," </tr>\n");

              else
                fprintf(ps," <td></td> ");
              contador++;              
        }
    }

    fprintf(ps,"  </table>\n");
    fprintf(ps,"\n");

    fprintf(ps,"  </body>\n");
    fprintf(ps,"</html>");

    fclose(ps);

    printf("Arquivo tabelas.html criado com sucesso\n");

    return 0;
}

Se estiver usando uma distribuição GNU/Linux, compile com:

$ gcc tabelaHTML.c -o tabelaHTML.out

Em seguida, execute da seguinte forma:

$ ./tabelaHTML.out

Como diz a mensagem, o arquivo tabela.html foi criado com sucesso. Abra este arquivo que está no mesmo diretório que o seu binário e bom proveito!