Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

something like an "extended" C string library?

Tags:

c

string

I have used several dynamically typed languages and I have been avoiding C but enough is enough, it's the right tool for the job sometimes and I need to get over it.

The things I miss working with C are associative arrays and large string libraries. Is there a library that gives more options then string.h? Any general advice when it comes to make the transition with strings?

Thanks for reading-Patrick

like image 220
Patrick Avatar asked Jun 07 '11 21:06

Patrick


People also ask

Is there a string library in C?

h is the header in the C standard library for the C programming language which contains macro definitions, constants and declarations of functions and types used not only for string handling but also various memory handling functions; the name is thus something of a misnomer.

What are the types of libraries in C?

Two types of libraries in C: Static and dynamic There are two types of libraries in C static and dynamic. Dynamic libraries are shared libraries with specific functions launched during the execution of a program and contribute to “reduced memory consumption”(techopedia.com). Dynamic libraries are linked in two stages.

Which library is used for array in C?

The GNU C library provides an extensive set of string utility functions, including functions for copying, concatenating, comparing, and searching strings. Many of these functions can also operate on arbitrary regions of storage; for example, the memcpy function can be used to copy the contents of any kind of array.

How many C libraries are there?

The ANSI C standard library consists of 24 C header files which can be included into a programmer's project with a single directive. Each header file contains one or more function declarations, data type definitions and macros.


2 Answers

You can take a look at the Better String Library. The description from the site:

The Better String Library is an abstraction of a string data type which is superior to the C library char buffer string type, or C++'s std::string. Among the features achieved are:

  • Substantial mitigation of buffer overflow/overrun problems and other failures that result from erroneous usage of the common C string library functions
  • Significantly simplified string manipulation
  • High performance interoperability with other source/libraries which expect '\0' terminated char buffers
  • Improved overall performance of common string operations
  • Functional equivalency with other more modern languages

The library is totally stand alone, portable (known to work with gcc/g++, MSVC++, Intel C++, WATCOM C/C++, Turbo C, Borland C++, IBM's native CC compiler on Windows, Linux and Mac OS X), high performance, easy to use and is not part of some other collection of data structures. Even the file I/O functions are totally abstracted (so that other stream-like mechanisms, like sockets, can be used.) Nevertheless, it is adequate as a complete replacement of the C string library for string manipulation in any C program.

like image 161
Sylvain Defresne Avatar answered Oct 13 '22 20:10

Sylvain Defresne


POSIX gives you <string.h>, <strings.h> and <regex.h>. If you really need more of a string library than this, C is probably not the right tool for that particular job.

As for a hash table, you can't get a type-safe hash table in C without a lot of nasty macros. If you're OK with just storing void-pointers, or with doing some manual work for each type of map, then you shouldn't be lacking for options. Coding your own hash table is a hoot and a half - just search Stackoverflow for help with the hash function. If you don't want to roll your own, strmap [LGPL] looks decent.

like image 25
gnud Avatar answered Oct 13 '22 18:10

gnud