?? stringprocess.c
字號:
#include "StringProcess.h"
#include <stdlib.h>
#include <string.h>
PXML_String CreateXML_String()
{
PXML_String pXmlString = malloc(sizeof(XML_String));
if(pXmlString == NULL) return NULL;
pXmlString->data = malloc((STR_LENGTH + 1)*sizeof(XML_Char));
if(pXmlString == NULL) return NULL;
pXmlString->capacity = STR_LENGTH;
pXmlString->length = 0;
pXmlString->data[0] = '\0';
return pXmlString;
}
//
void FreeXML_String(PXML_String pXmlString)
{
if(pXmlString) free(pXmlString->data);
free(pXmlString);
}
//
enum XML_STR_PRO_Error XML_StrCat(PXML_String target, const XML_Char* source, int length)
{
XML_Char* buffer = NULL;;
if(!target || !source) return MEM_OUT;
if(target->capacity - target->length > length){
if(! target->length) STRCPY(target->data, source);
else STRCAT(target->data, source);
}else{
buffer = malloc((target->capacity + length + 1)*sizeof(XML_Char));
if(!buffer) return MEM_OUT;
STRCPY(buffer, target->data);
STRCAT(buffer, source);
free(target->data);
target->data = buffer;
}
target->length += length;
return STRING_SUCCESS;
}
enum XML_STR_PRO_Error XML_StrStrCat(PXML_String target, const PXML_String source)
{
return XML_StrCat(target, source->data, source->length);
}
enum XML_STR_PRO_Error XML_StrPCharCat(PXML_String target, const XML_Char* source)
{
return XML_StrCat(target, source, STRLEN(source));
}
/**Compare two variables with type of XML_String
return value as STRCMP(char *, char *)
*/
int XML_StrPCharCmp(const PXML_String xmlStr, const XML_Char* str)
{
return STRCMP(xmlStr->data, str);
}
/**Compare the reference of XML_String type with the second reference of char* type
return value as STRCMP(char *, char *)
*/
int XML_StrCmp(const PXML_String xmlStr1, const PXML_String xmlStr2)
{
return STRCMP(xmlStr1->data, xmlStr2->data);
}
/**
Make the variable passed in referrence with size 0
*/
void XML_ClearStr(PXML_String str)
{
if(str == NULL || str->capacity == 0){
str = CreateXML_String();
return;
}
str->length = 0;
str->data[0] = '\0';
}
/**
Add a single XML_Char in str.
*/
enum XML_STR_PRO_Error XML_AddXMLChar(PXML_String str, const XML_Char character)
{
if(!str) return INVALID_STR;
if(str->length < str->capacity){
str->data[str->length] = character;
str->length++;
str->data[str->length] = '\0';
return STRING_SUCCESS;
}else{
XML_Char* buff = malloc((str->capacity)*sizeof(XML_Char) + (STR_LENGTH + 1)*sizeof(XML_Char) );
if(!buff) return MEM_OUT;
STRCPY(buff, str->data);
free(str->data);
str->data = buff;
str->capacity = str->capacity + STR_LENGTH;
str->data[str->length] = character;
str->length++;
str->data[str->length] = '\0';
return STRING_SUCCESS;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -