windows下使用实例:
切换到fish.exe所在文件夹下在命令行下运行fish.exe
程序代码:fish -i bc.c -c bccn.conf -o bc.txt
bc.c是下面显示的c程序,用来做测试用的,使用选项-i指定要高亮的源程序输入
bccn.conf是为bccn.net论坛写的配置文件,你可以用记事本打开修改配色方案。
-o指定输出文件,这里输出文件是bc.txt
可以使用下面的命令获取帮助:
程序代码:fish -h
将输出的bc.txt直接贴上论坛就可以了。
生成的bc.txt内容是:
程序代码:[color=a020f0]#include[/color][color=ff00ff]<assert.h>[/color]
[color=a020f0]#include[/color][color=ff00ff]<stdlib.h>[/color]
[color=2e8b57]int[/color] [color=000000]get_tag[/color]([color=2e8b57]char[/color] *[color=000000]buf[/color], [color=2e8b57]int[/color] [color=000000]index[/color],[color=2e8b57]char[/color] [color=000000]opt[/color])
{
[color=2e8b57]char[/color] *[color=000000]dest[/color];
[color=2e8b57]const[/color] [color=2e8b57]char[/color] *[color=000000]SectionName[/color]=[color=000000]sections[/color][[color=000000]index[/color]];
[color=000000]assert[/color]([color=000000]opt[/color]==[color=ff00ff]'s'[/color] || [color=000000]opt[/color]==[color=ff00ff]'e'[/color]);
[color=2e8b57]if[/color]([color=000000]opt[/color] == [color=ff00ff]'s'[/color])
[color=000000]dest[/color]=[color=000000]tag_list[/color][[color=000000]index[/color]].[color=000000]start[/color];
[color=2e8b57]else[/color]
[color=000000]dest[/color]=[color=000000]tag_list[/color][[color=000000]index[/color]].[color=000000]end[/color];
[color=2e8b57]while[/color](*[color=000000]buf[/color] != [color=ff00ff]'!'[/color] && *[color=000000]buf[/color] != [color=ff00ff]'\0'[/color])
++[color=000000]buf[/color];
[color=2e8b57]if[/color](*[color=000000]buf[/color] == [color=ff00ff]'\0'[/color])
{
[color=2e8b57]if[/color]([color=000000]opt[/color] == [color=ff00ff]'s'[/color])
[color=000000]fprintf[/color]([color=000000]stderr[/color],[color=ff00ff]"配置文件错误:%s\nstart = \n"[/color],[color=000000]SectionName[/color]);
[color=2e8b57]else[/color]
[color=000000]fprintf[/color]([color=000000]stderr[/color],[color=ff00ff]"配置文件错误:%s\nend = \n"[/color],[color=000000]SectionName[/color]);
[color=000000]exit[/color]([color=ff00ff]1[/color]);
}
[color=000000]strncpy[/color]([color=000000]dest[/color],++[color=000000]buf[/color],[color=ff00ff]40[/color]);
[color=2e8b57]return[/color] [color=ff00ff]0[/color];
}
将输出的bc.txt直接贴出来即可:
#include<assert.h>
#include<stdlib.h>
int get_tag(
char *
buf,
int index,
char opt)
{
char *
dest;
const char *
SectionName=
sections[
index];
assert(
opt==
's' ||
opt==
'e');
if(
opt ==
's')
dest=
tag_list[
index].
start;
else
dest=
tag_list[
index].
end;
while(*
buf !=
'!' && *
buf !=
'\0')
++
buf;
if(*
buf ==
'\0')
{
if(
opt ==
's')
fprintf(
stderr,
"配置文件错误:%s\nstart = \n",
SectionName);
else
fprintf(
stderr,
"配置文件错误:%s\nend = \n",
SectionName);
exit(
1);
}
strncpy(
dest,++
buf,
40);
return 0;
}
当然也可以向下面这样在bc.txt文件首尾加入
程序代码:[quote][/quote]
添加边框。
添加后的内容是:
程序代码:[quote]
[color=a020f0]#include[/color][color=ff00ff]<assert.h>[/color]
[color=a020f0]#include[/color][color=ff00ff]<stdlib.h>[/color]
[color=2e8b57]int[/color] [color=000000]get_tag[/color]([color=2e8b57]char[/color] *[color=000000]buf[/color], [color=2e8b57]int[/color] [color=000000]index[/color],[color=2e8b57]char[/color] [color=000000]opt[/color])
{
[color=2e8b57]char[/color] *[color=000000]dest[/color];
[color=2e8b57]const[/color] [color=2e8b57]char[/color] *[color=000000]SectionName[/color]=[color=000000]sections[/color][[color=000000]index[/color]];
[color=000000]assert[/color]([color=000000]opt[/color]==[color=ff00ff]'s'[/color] || [color=000000]opt[/color]==[color=ff00ff]'e'[/color]);
[color=2e8b57]if[/color]([color=000000]opt[/color] == [color=ff00ff]'s'[/color])
[color=000000]dest[/color]=[color=000000]tag_list[/color][[color=000000]index[/color]].[color=000000]start[/color];
[color=2e8b57]else[/color]
[color=000000]dest[/color]=[color=000000]tag_list[/color][[color=000000]index[/color]].[color=000000]end[/color];
[color=2e8b57]while[/color](*[color=000000]buf[/color] != [color=ff00ff]'!'[/color] && *[color=000000]buf[/color] != [color=ff00ff]'\0'[/color])
++[color=000000]buf[/color];
[color=2e8b57]if[/color](*[color=000000]buf[/color] == [color=ff00ff]'\0'[/color])
{
[color=2e8b57]if[/color]([color=000000]opt[/color] == [color=ff00ff]'s'[/color])
[color=000000]fprintf[/color]([color=000000]stderr[/color],[color=ff00ff]"配置文件错误:%s\nstart = \n"[/color],[color=000000]SectionName[/color]);
[color=2e8b57]else[/color]
[color=000000]fprintf[/color]([color=000000]stderr[/color],[color=ff00ff]"配置文件错误:%s\nend = \n"[/color],[color=000000]SectionName[/color]);
[color=000000]exit[/color]([color=ff00ff]1[/color]);
}
[color=000000]strncpy[/color]([color=000000]dest[/color],++[color=000000]buf[/color],[color=ff00ff]40[/color]);
[color=2e8b57]return[/color] [color=ff00ff]0[/color];
}
[/quote]
添加边框后的效果如下:
#include<assert.h>
#include<stdlib.h>
int get_tag(char *buf, int index,char opt)
{
char *dest;
const char *SectionName=sections[index];
assert(opt=='s' || opt=='e');
if(opt == 's')
dest=tag_list[index].start;
else
dest=tag_list[index].end;
while(*buf != '!' && *buf != '\0')
++buf;
if(*buf == '\0')
{
if(opt == 's')
fprintf(stderr,"配置文件错误:%s\nstart = \n",SectionName);
else
fprintf(stderr,"配置文件错误:%s\nend = \n",SectionName);
exit(1);
}
strncpy(dest,++buf,40);
return 0;
}
[
本帖最后由 VxWorks 于 2008-5-28 18:13 编辑 ]