Code Monkey home page Code Monkey logo

c-stringbuilder's Introduction

C String Builder

There are many use cases for a String Builder in C, especially when iteratively constructing highly interpolated strings. For example, building a complex SQL query, or rendering HTML.

This brief implementation uses a dynamically allocated, linked-list to store string fragments in O(k) - where k is the length of the inserted string fragment.

A concatenated output string can be generated or regenerated at any point in O(n) - where n is the total length of all appended string fragments.

This substancially defeats traditional, iterative concatentation which runs in O(n^2).

This implementation is not thread-safe, uses unbounded iteration (for now) and does not (ever) offer any form of input sanitization.

Example

// create an empty string builder
StringBuilder *sb = sb_create();
char *str = NULL;

// append some strings
sb_appendf(sb, "What is your name?\n -> %s\n\n", "Sir Lancelot, of Camelot");
sb_appendf(sb, "What is your quest?\n -> %s\n\n", "To seek the Holy Grail");
sb_appendf(sb, "What is your favorite color?\n -> %s\n\n", "Blue");
sb_append(sb, "Right, off you go");

// print
str = sb_concat(sb);
puts(str);

// clean up
free(str);
sb_free(sb);

Output:

What is your name?
 -> Sir Lancelot, of Camelot

What is your quest?
 -> To seek the Holy Grail

What is your favorite color?
 -> Blue

Right, off you go

c-stringbuilder's People

Contributors

cavaliercoder avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.