牛刀杀鸡:用C生成html表格

很久没更新我的小窝 http://DaNmarner.myrice.com 了。

今天是期中考试后两天家的第二天,下一次再休息两天,不知道会是哪年哪月了,昨天全部蹉跎在了WOW上,累到现在还没完全休息过来。终于下了决心做点事情,遂决定把网页更新一下。

其实整个小站都还没有完工,尤其是题解K&R的各个分页,那些表格上的超连接和锚记如果一个一个做上去恐怕要做到下一次放假。既然这么空虚,那就写个小程序搞定它吧。

先在DM里找了一段做好了的 <tr></tr>,把每一行都放在fprintf函数里面(当然是用我早写好的小程序做的,否则这也是个体力活),最后把里面需要逐渐增大的数字等等换成printf函数里的转义字符(写这里的时候卡在了%字符的转换上,后来还是跑到一个Q群里问了下才知道原来是%%),把这段代码放到一个循环里,由于总共有7个网页,每个网页的表格行数都不太一样,所以通过输入来控制循环的次数 ,最后把生成的html代码放到网页里,总共用了1个小时就搞定了,哈哈!

在这里看看效果吧

http://DaNmarner.myrice.com/KandR/KandR.htm

用来把原始的html放在fprintf函数里面程序的代码,因为把什么东西放在什么里面都是可以通过参数自己定义的,所以很有用哦。

------------------------------------------------------ladd.c-------------------------------------------------

///

     ladd.c   Coded by DaNmarner   

///

#include<stdio.h>
#include<string.h>

#define MAXLEN 1000

int getline(FILE *src,char *line,int limit);
int main(int argc,char *argv[])
{
    char fmt[MAXLEN];
    FILE *src,*dst;
    char line[MAXLEN];
    char fout[100]="Added_";
    if (argc!=4 && argc!=3){
       puts("/nLine Adder by DaNmarner 2005.8 DaNmarner@gmail.com" );
       puts("/nDescription:");
       puts("Add charater(s) or phrases to every line in ASCII files");
       puts("/nUsage : adder FormatString SourceFile [Destination]");
       puts("        (for FormatSting, use C grammer for printf(),%s to represent ");
       puts("        the original line,use /"/"  if space character(s) contained");
       printf("        each line should not longer than %d characters)",MAXLEN-1);
       puts("/n/nExample : ladd  /"printf(/"%s//n/");/" source.txt dest.c");
       return 1;
    }else if(argc==3) strcat(fout,argv[2]);
    else strcpy(fout,argv[3]);
   
    if ((src=fopen(argv[2],"r"))==NULL){
       printf("Error opening file %s!",argv[2]);
       return 1;
    }
    if ((dst=fopen(fout,"a"))==NULL){
       printf("Error creating file %s!",argv);
       return 1;
    }
    printf("/nLine Adder by DaNmarner 2005.8 DaNmarner@gmail.com/n" );
    printf("/nAdding %s to each line......",argv[1]);
    while(!feof(src)){
        getline(src,line,MAXLEN);
        fprintf(dst,argv[1],line);
        fprintf(dst,"/n");
    }
    printf("done/n/n");
    printf("Check %s./n",fout);
    return 0;
}

int getline(FILE *src,char *line,int limit) {
 int c, i;

 for (i=0; i<limit-1 && (c=fgetc(src)) != EOF && c != '/n'; i++) {
  line[i] = c;
 }

 line[i] = '/0';
 return i;
}

-----------------------------------------------------------------------------------------------------------

下面是已经做好了的一段<tr>

--------------------------------------------------------------------------------------------------------

<tr>
          <th width="12%" height="69" scope="row"><font size="2" face="Arial, Helvetica, sans-serif, 黑体">1-1</font></th>
          <td width="32%"><div align="left"><font size="2" face="Arial, Helvetica, sans-serif, 黑体"><a name="ex1_01" id="ex1_01"></a></font></div></td>
          <td width="31%"><p>&nbsp;</p>
          </td>
          <td width="25%"><div align="center"><font size="2" face="Arial, Helvetica, sans-serif, 黑体"><a href="source/ex1_01.c">ex1_01.c</a></font></div></td>
        </tr>

----------------------------------------------------------------------------------------------------------

生成html的代码:

-----------------------chapter.c--by DaNmarner------------------------------------

#include<stdio.h>
int main (void)
{
 FILE *f;
 int i,ch,top;


 f=fopen("chapter.txt","w");
 for (ch=1;ch<=8;ch++){
 scanf("%d%d",&top);
 for (i=1;i<=top;i++){
  fprintf(f,"<tr>");
  fprintf(f,"          <th width=/"12%%/" height=/"69/" scope=/"row/"><font size=/"2/" face=/"Arial, Helvetica, sans-serif, 黑体/">%d-%d</font></th>/n",ch,i);
  fprintf(f,"          <td width=/"32%%/"><div align=/"left/"><font size=/"2/" face=/"Arial, Helvetica, sans-serif, 黑体/"><a name=/"ex%d_%s%d/" id=/"ex%d_%s%d/"></a></font></div></td>/n",ch,(i<10)?"0":"",i,ch,(i<10)?"0":"",i);
  fprintf(f,"          <td width=/"31%%/"><p>&nbsp;</p>");
  fprintf(f,"          </td>");
  fprintf(f,"          <td width=/"25%%/"><div align=/"center/"><font size=/"2/" face=/"Arial, Helvetica, sans-serif, 黑体/"><a href=/"source/ex%d_%s%d.c/">ex%d_%s%d.c</a></font></div></td>",ch,(i<10)?"0":"",i,ch,(i<10)?"0":"",i);
  fprintf(f,"        </tr>");
 }
 }
 fclose(f);
 return 0;
}

-----------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值