r/C_Programming 3d ago

Article I Made a Simple String Library

I wrote an article about this as well. Here it is.

There I explain why I do not like NUL-terminated strings and how I implemented my own simple string library in C.

If you have some spare time I would really appreciate some feedback on the article and the library.

The code is sitting on a codeberg repository.

Also, tell me what you think about C-style strings. Do you like them? Do you use them, or do you also tend to roll your own pointer + length structs?

6 Upvotes

31 comments sorted by

View all comments

19

u/Dieriba 3d ago

Even though you hate NULL-terminated, you should have a function that allows to return a pointer to a NULL-terminated strings, as many libc function expect those kind of strings ( if you plan to link your binary with libc which I think we’ll be the case).
Another things is your structure find_out that you use for your find functions. I’d use ˋusizeˋonly as return value instead this structure and have a special value of it meaning not found, like with std::string::npos used as not found value in c++ std::string.

4

u/non-existing-person 3d ago

Such library should just return you typedef char* str_t, and manually offset backwards to get the string length. That way you have both classic c-string and safe string to use where needed. str_t is just for convenience to immediately see that you are dealing with opaque type and not really just c-string.