很久没更新我的小窝 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> </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> </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;
}
-----------------------------------------------------------------------------------------------------------------