Ejemplo n.º 1
0
//将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;
}
Ejemplo n.º 2
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 );
}
Ejemplo n.º 3
0
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()));
}
Ejemplo n.º 4
0
// 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;
}
Ejemplo n.º 5
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;
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
0
/* 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);
}