BBS水木清华站∶精华区
发信人: sunhu.bbs@csie.nctu.edu.tw (Sun), 看板: linux
标 题: [把 info 内的文件变成 ascii 的文字格式!]
发信站: 交大资工凤凰城资讯站 (Tue Jul 16 00:15:37 1996)
转信站: maple!news.ee.nthu!news.csie.nctu!phoenix
[把 info 内的文件变成 ascii 的文字格式!]
当我们用 info 这个程式看一些文件的时候, 这真的是一种很
大的享受, 没有任何事是比吸收知识来得有意思. 至少弟自己
是这麽认为, 接者更有想把文件全给印出来的念头.
翻翻 info 的使用方法, 假设我想印 make 这个 node 的所有
文件, 那麽我可以用下面的指令:
info make -o make.asc -s
这样就可以把所有的 make.info-(1/8) 合在一起, 变成一个
make.asc, 可是有个问题存在, 就是多了下面这行:
File: make.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)
假如你用的是一般 A4 的印表机, 又不想用那些高品质的排版
软体, 只需要纯文字模式的列印品质, 那上面那行可能是唯一
美中不足的地方, 因为有时候往往会超过一行80个字的限制.
在找不到解决方法的时候(应该有别的方法, 可惜弟不会),
只好写个小程式去完成.
gcc -Wall -O -o info2txt info2txt.c
当编绎成执行档候, 在用指令:
info2txt make.asc make.txt
那麽你就可以得到一个 "乾净" 的 make.txt
快去把纸给印光光吧... :)
阿尚
sunhu.bbs@csie.nctu.edu.tw
/* info2txt.c begin here
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char buf[1024];
FILE *fi, *fo;
if(argc != 3) {
printf("Usage: info2txt <INPUT FILE> <OUTPUT FILE>\n");
exit(0);
}
fi = fopen( argv[1], "r" );
fo = fopen( argv[2], "w" );
if((fi == NULL ) & (fo == NULL )) {
printf("File I/O Error!\n");
exit(0);
}
while(fgets(buf, 1024, fi)) {
if( strncmp(buf, "File: ", 6)) {
fputs(buf, fo);
}
else {
printf("%s", buf);
}
}
fclose(fi);
fclose(fo);
return 0;
}
/* info2txt end here
*/
BBS水木清华站∶精华区