⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utf8.c

📁 远程登陆工具软件源码 用于远程登陆unix
💻 C
📖 第 1 页 / 共 3 页
字号:
	write_utf8(NULL, input[i], &state, utf8_emit, &p);

    va_start(ap, inlen);
    l = 0;
    for (i = 0; i < p - str; i++) {
	l = va_arg(ap, long int);
	if (l == -1) {
	    printf("%d: correct string shorter than output\n", line);
	    total_errs++;
	    break;
	}
	if (l != str[i]) {
	    printf("%d: char %d came out as %08x, should be %08x\n",
		    line, i, str[i], l);
	    total_errs++;
	}
    }
    if (l != -1) {
	l = va_arg(ap, long int);
	if (l != -1) {
	    printf("%d: correct string longer than output\n", line);
	    total_errs++;
	}
    }
    va_end(ap);
}

/* Macro to concoct the first three parameters of utf8_read_test. */
#define TESTSTR(x) __LINE__, x, lenof(x)

int main(void)
{
    printf("read tests beginning\n");
    utf8_read_test(TESTSTR("\xCE\xBA\xE1\xBD\xB9\xCF\x83\xCE\xBC\xCE\xB5"),
		   0x000003BA, /* GREEK SMALL LETTER KAPPA */
		   0x00001F79, /* GREEK SMALL LETTER OMICRON WITH OXIA */
		   0x000003C3, /* GREEK SMALL LETTER SIGMA */
		   0x000003BC, /* GREEK SMALL LETTER MU */
		   0x000003B5, /* GREEK SMALL LETTER EPSILON */
		   0, -1);
    utf8_read_test(TESTSTR("\x00"),
		   0x00000000, /* <control> */
		   0, -1);
    utf8_read_test(TESTSTR("\xC2\x80"),
		   0x00000080, /* <control> */
		   0, -1);
    utf8_read_test(TESTSTR("\xE0\xA0\x80"),
		   0x00000800, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xF0\x90\x80\x80"),
		   0x00010000, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xF8\x88\x80\x80\x80"),
		   0x00200000, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xFC\x84\x80\x80\x80\x80"),
		   0x04000000, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\x7F"),
		   0x0000007F, /* <control> */
		   0, -1);
    utf8_read_test(TESTSTR("\xDF\xBF"),
		   0x000007FF, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xEF\xBF\xBD"),
		   0x0000FFFD, /* REPLACEMENT CHARACTER */
		   0, -1);
    utf8_read_test(TESTSTR("\xEF\xBF\xBF"),
		   ERROR,      /* <no name available> (invalid char) */
		   0, -1);
    utf8_read_test(TESTSTR("\xF7\xBF\xBF\xBF"),
		   0x001FFFFF, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xFB\xBF\xBF\xBF\xBF"),
		   0x03FFFFFF, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xFD\xBF\xBF\xBF\xBF\xBF"),
		   0x7FFFFFFF, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xED\x9F\xBF"),
		   0x0000D7FF, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xEE\x80\x80"),
		   0x0000E000, /* <Private Use, First> */
		   0, -1);
    utf8_read_test(TESTSTR("\xEF\xBF\xBD"),
		   0x0000FFFD, /* REPLACEMENT CHARACTER */
		   0, -1);
    utf8_read_test(TESTSTR("\xF4\x8F\xBF\xBF"),
		   0x0010FFFF, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\xF4\x90\x80\x80"),
		   0x00110000, /* <no name available> */
		   0, -1);
    utf8_read_test(TESTSTR("\x80"),
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\xBF"),
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\x80\xBF"),
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\x80\xBF\x80"),
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\x80\xBF\x80\xBF"),
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\x80\xBF\x80\xBF\x80"),
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\x80\xBF\x80\xBF\x80\xBF"),
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\x80\xBF\x80\xBF\x80\xBF\x80"),
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF"),
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   ERROR,      /* (unexpected continuation byte) */
		   0, -1);
    utf8_read_test(TESTSTR("\xC0\x20\xC1\x20\xC2\x20\xC3\x20\xC4\x20\xC5\x20\xC6\x20\xC7\x20"),
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   0, -1);
    utf8_read_test(TESTSTR("\xE0\x20\xE1\x20\xE2\x20\xE3\x20\xE4\x20\xE5\x20\xE6\x20\xE7\x20\xE8\x20\xE9\x20\xEA\x20\xEB\x20\xEC\x20\xED\x20\xEE\x20\xEF\x20"),
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   0, -1);
    utf8_read_test(TESTSTR("\xF0\x20\xF1\x20\xF2\x20\xF3\x20\xF4\x20\xF5\x20\xF6\x20\xF7\x20"),
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   0, -1);
    utf8_read_test(TESTSTR("\xF8\x20\xF9\x20\xFA\x20\xFB\x20"),
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   0, -1);
    utf8_read_test(TESTSTR("\xFC\x20\xFD\x20"),
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   ERROR,      /* (incomplete sequence) */
		   0x00000020, /* SPACE */
		   0, -1);
    utf8_read_test(TESTSTR("\xC0"),
		   ERROR,      /* (incomplete sequence) */
		   0, -1);
    utf8_read_test(TESTSTR("\xE0\x80"),

⌨️ 快捷键说明

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