writer.c

来自「harvest是一个下载html网页得机器人」· C语言 代码 · 共 50 行

C
50
字号
#include <stdio.h>#include <ctype.h>#include <string.h>#include "catdoc.h"/************************************************************************//* performs paragraph formatting if wrap_margin is non-zero             *//* gets character sequence and appends it to buffer. If buffer is long  *//* enough, prints its beginning out                                     *//************************************************************************/static char buffer[LINE_BUF_SIZE]="";void out_char(const char *chunk) {    if (!wrap_margin) {       fputs(chunk,stdout);       return;    }    strcat(buffer,chunk); /* This strcat is safe. wrap margin setting                             code in main.c ensures that wrap_margin is 			     less than LINE_BUF_SIZE-strlen(largest chunk)			   */      if (strchr(chunk,'\n')) {      /* End of paragraph */      char *q = map_subst(spec_chars,'\n');      fputs(buffer,stdout);      *buffer=0;      if (q) fputs(q,stdout);    } else if (strlen(buffer)>wrap_margin) {        char *q=buffer,*p=buffer+wrap_margin;        while (p>buffer&&!isspace(*p)) p--;        if (p==buffer) {        /*worst case - nowhere to wrap. Will use brute force */            fwrite(buffer,wrap_margin,1,stdout);            fputc('\n',stdout);            p=buffer+wrap_margin;        } else {            *p=0;p++;	    fputs(buffer,stdout);	    fputc('\n',stdout);        }	for(q=buffer;*p;p++,q++) *q=*p;	*q=0;     }}void output_paragraph(unsigned short int *buffer) {    unsigned short int *p;    for (p=buffer;*p;p++) {        out_char(convert_char(*p));    }    out_char("\n");}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?