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

📄 chardata.c

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 C
字号:
/*  chardata.c * * */#include <assert.h>#include <check.h>#include <stdio.h>#include <string.h>#include "chardata.h"static intxmlstrlen(const XML_Char *s){    int len = 0;    assert(s != NULL);    while (s[len] != 0)        ++len;    return len;}voidCharData_Init(CharData *storage){    assert(storage != NULL);    storage->count = -1;}voidCharData_AppendString(CharData *storage, const char *s){    int maxchars = sizeof(storage->data) / sizeof(storage->data[0]);    int len;    assert(s != NULL);    len = strlen(s);    if (storage->count < 0)        storage->count = 0;    if ((len + storage->count) > maxchars) {        len = (maxchars - storage->count);    }    if (len + storage->count < sizeof(storage->data)) {        memcpy(storage->data + storage->count, s, len);        storage->count += len;    }}voidCharData_AppendXMLChars(CharData *storage, const XML_Char *s, int len){    int maxchars;    assert(storage != NULL);    assert(s != NULL);    maxchars = sizeof(storage->data) / sizeof(storage->data[0]);    if (storage->count < 0)        storage->count = 0;    if (len < 0)        len = xmlstrlen(s);    if ((len + storage->count) > maxchars) {        len = (maxchars - storage->count);    }    if (len + storage->count < sizeof(storage->data)) {        memcpy(storage->data + storage->count, s,               len * sizeof(storage->data[0]));        storage->count += len;    }}intCharData_CheckString(CharData *storage, const char *expected){    char buffer[1280];    int len;    int count;    assert(storage != NULL);    assert(expected != NULL);    count = (storage->count < 0) ? 0 : storage->count;    len = strlen(expected);    if (len != count) {        if (sizeof(XML_Char) == 1)            sprintf(buffer, "wrong number of data characters:"                    " got %d, expected %d:\n%s", count, len, storage->data);        else            sprintf(buffer,                    "wrong number of data characters: got %d, expected %d",                    count, len);        fail(buffer);        return 0;    }    if (memcmp(expected, storage->data, len) != 0) {        fail("got bad data bytes");        return 0;    }    return 1;}intCharData_CheckXMLChars(CharData *storage, const XML_Char *expected){    char buffer[1024];    int len = xmlstrlen(expected);    int count;    assert(storage != NULL);    count = (storage->count < 0) ? 0 : storage->count;    if (len != count) {        sprintf(buffer, "wrong number of data characters: got %d, expected %d",                count, len);        fail(buffer);        return 0;    }    if (memcmp(expected, storage->data, len * sizeof(storage->data[0])) != 0) {        fail("got bad data bytes");        return 0;    }    return 1;}

⌨️ 快捷键说明

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