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水木清华站∶精华区