Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct{
- int nSize;
- int nMaxCapacity;
- char* szStr;
- } StringBuilder;
- StringBuilder* Initialize(int nCapacity);
- void Append(StringBuilder *strBuilder, char* szStr);
- void Clear(StringBuilder *strBuilder);
- int _tmain(int argc, _TCHAR* argv[])
- {
- StringBuilder* strBuilder = Initialize(1);
- Append(strBuilder, "I'm the string! :)\0");
- printf("%s", strBuilder);
- Clear(strBuilder);
- getchar();
- return 0;
- }
- StringBuilder* Initialize(int nCapacity)
- {
- StringBuilder* strBuilder = (StringBuilder*)malloc(sizeof(StringBuilder));
- strBuilder->nMaxCapacity = nCapacity;
- strBuilder->nSize = 0;
- strBuilder->szStr = (char*)malloc(1);
- strBuilder->szStr = "\0";
- return strBuilder;
- }
- void Clear(StringBuilder *strBuilder)
- {
- if(strBuilder != NULL)
- free(strBuilder);
- }
- void Append(StringBuilder *strBuilder, char* szStr)
- {
- if(strBuilder->nSize + strlen(szStr) > strBuilder->nMaxCapacity)
- if((strBuilder->nMaxCapacity * 2) <= 2147483647)
- {
- strBuilder = (StringBuilder*)realloc(strBuilder, (strBuilder->nMaxCapacity * 2));
- strBuilder->nMaxCapacity = strBuilder->nMaxCapacity * 2;
- }
- else
- return; // overflow
- else
- strBuilder = (StringBuilder*)realloc(strBuilder, strBuilder->nSize + strlen(szStr));
- strBuilder->nSize += strlen(szStr);
- strBuilder->szStr = (char*)realloc(strBuilder->szStr, strBuilder->nSize + 2);
- strcat(strBuilder->szStr, szStr);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement