📄 chardata.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 + -