//将ascii_zk.txt转换为二进制文件 int main(void) { char buffer[5]; unsigned char ch=0; int i=0; FILE *frp=0; FILE *fwp=0; for(i=0; i<5; i++) buffer[i] = 0; frp=fopen("ascii_zk.txt","r"); //字模提取软件得到的文本文件 fwp=fopen("ascii_zk","w"); while(buffer[4] != 0x2e) //全部数据以句号结尾 { for(i=0; i<5; i++) buffer[i]=fgetc(frp); ch = c2x(buffer[2]); ch = ch*16; ch = ch+c2x(buffer[3]); fputc(ch,fwp); } fclose(frp); fclose(fwp); return 0; }
int bwputx( int channel, char c ) { char chh, chl; chh = c2x( c / 16 ); chl = c2x( c % 16 ); bwputc( channel, chh ); return bwputc( channel, chl ); }
double ConstraintTangentCircumf::error() { double dx = (*c1x() - *c2x()); double dy = (*c1y() - *c2y()); if (internal) return scale * (sqrt(dx*dx + dy*dy) - std::abs(*r1() - *r2())); else return scale * (sqrt(dx*dx + dy*dy) - (*r1() + *r2())); }
// Functions escape_urlencoded & pescape_urlencoded were copied from APR v1.6 // http://svn.apache.org/repos/asf/apr/apr/branches/1.6.x/include/apr_escape.h static int escape_urlencoded(char *escaped, const char *str, apr_size_t *len) { apr_size_t size = 1; int found = 0; const unsigned char *s = (const unsigned char *) str; unsigned char *d = (unsigned char *) escaped; unsigned c; if (s) { if (d) { while ((c = *s)) { if (TEST_CHAR(c, T_ESCAPE_URLENCODED)) { d = c2x(c, '%', d); size += 2; found = 1; } else if (c == ' ') { *d++ = '+'; found = 1; } else { *d++ = c; } ++s; size++; } *d = '\0'; } else { while ((c = *s)) { if (TEST_CHAR(c, T_ESCAPE_URLENCODED)) { size += 2; found = 1; } else if (c == ' ') { found = 1; } ++s; size++; } } } if (len) { *len = size; } if (!found) { return 1; } return 0; }
double ConstraintTangentCircumf::grad(double *param) { double deriv=0.; if (param == c1x() || param == c1y() || param == c2x() || param == c2y()|| param == r1() || param == r2()) { double dx = (*c1x() - *c2x()); double dy = (*c1y() - *c2y()); double d = sqrt(dx*dx + dy*dy); if (param == c1x()) deriv += dx/d; if (param == c1y()) deriv += dy/d; if (param == c2x()) deriv += -dx/d; if (param == c2y()) deriv += -dy/d; if (internal) { if (param == r1()) deriv += (*r1() > *r2()) ? -1 : 1; if (param == r2()) deriv += (*r1() > *r2()) ? 1 : -1; } else { if (param == r1()) deriv += -1; if (param == r2()) deriv += -1; } } return scale * deriv; }
AP_DECLARE(char *) ap_escape_urlencoded_buffer(char *copy, const char *buffer) { const unsigned char *s = (const unsigned char *) buffer; unsigned char *d = (unsigned char *) copy; unsigned c; while ((c = *s)) { if (TEST_CHAR(c, T_ESCAPE_URLENCODED)) { d = c2x(c, '%', d); } else if (c == ' ') { *d++ = '+'; } else { *d++ = c; } ++s; } *d = '\0'; return copy; }
/* copied from httpd-2.2.4/server/util.c */ apr_size_t escape_errorlog_item(char *dest, const char *source, apr_size_t buflen) { unsigned char *d, *ep; const unsigned char *s; if (!source || !buflen) { /* be safe */ return 0; } d = (unsigned char *)dest; s = (const unsigned char *)source; ep = d + buflen - 1; for (; d < ep && *s; ++s) { /* httpd-2.2.4/server/util.c has this: if (TEST_CHAR(*s, T_ESCAPE_LOGITEM)) { which does this same check with a fast lookup table. Well, mostly the same; we don't escape quotes, as that does. */ if (*s && ( !svn_ctype_isprint(*s) || *s == '\\' || svn_ctype_iscntrl(*s))) { *d++ = '\\'; if (d >= ep) { --d; break; } switch(*s) { case '\b': *d++ = 'b'; break; case '\n': *d++ = 'n'; break; case '\r': *d++ = 'r'; break; case '\t': *d++ = 't'; break; case '\v': *d++ = 'v'; break; case '\\': *d++ = *s; break; case '"': /* no need for this in error log */ d[-1] = *s; break; default: if (d >= ep - 2) { ep = --d; /* break the for loop as well */ break; } c2x(*s, 'x', d); d += 3; } } else { *d++ = *s; } } *d = '\0'; return (d - (unsigned char *)dest); }
void EditBoxCollection::draw() { if(!current()) return; current()->draw(); char* str = statusline; char* ptr = cName; if(!str || !ptr) return; int fminlen = 0; char cNum[16]; for(;*str; str++) { if(*str == '%') { char *out = 0; int minlen = 0; str++; if(!*str) break; while(__isdd(*str)) { minlen *= 10; minlen += *str++ - '0'; } switch(*str) { case 'n': out = u2s(current()->number(), 0, cNum); break; case 'r': out = u2s(current()->get_edit_row(), minlen, cNum); break; case 'c': out = u2s(current()->get_edit_col(), minlen, cNum); break; case 'd': out = u2s(current()->get_cur_char(), minlen, cNum); break; case 'p': out = u2s(current()->get_rel_pos() , minlen, cNum); break; case 'x': out = c2x(current()->get_cur_char(), cNum); break; case 'h': out = Parser::NameByKey(current()->get_hiliting()); break; case 'l': out = current()->get_cur_cp(); break; case 'a': out = (current()->get_auto_indent() ? cStInd:cStNoInd); break; case 'o': out = (current()->get_auto_completion() ? cStAcOn:cStAcOff); break; case 'u': out = (current()->get_saved() ? cStNoChg:cStChange); break; case 't': out = (current()->get_unix() ? cStUnix:cStDOS); break; case 'm': out = (current()->get_column_block() ? cStColumn:cStStream); break; case 'f': out = current()->get_fmt_name(minlen, '°'); fminlen = minlen; break; case 'w': if(!(current()->ww_get() & WW_STATE)) out = cStUnwrap; else out = (current()->ww_get() & WW_MERGE ? cStMerge:cStWrap); break; default: if(*str) *ptr++ = *str; break; } if(out) while(*out) *ptr++ = *out++; continue; } *ptr++ = *str; } *ptr = 0; int sRow = (iUpperStatus) ? (0):(Rows - 1); vio_print2(sRow, 0, cName, Cols, MK_CLR(CL_STATUSLINE)); if(recording) vio_print2(sRow, Cols - 1, "R", 1, 0xF0); strcpy(cName, "FED-"); strcat(cName, current()->get_fmt_name(fminlen)); set_title(cName); }