A small, efficient C library providing missing utilities for safe and comfortable string manipulation and time helpers. Designed to be lightweight, portable, and easy to integrate into C projects.
- 📖 Full Documentation - Complete API reference, examples, and guides
- 🚀 Quick Start Guide - Get up and running in minutes
- 📋 API Reference - Detailed function documentation
- 💡 Examples - Code examples and use cases
# Clone and build
git clone https://github.com/murapadev/strap.git
cd strap
make
# Install (optional)
sudo make install
# Benchmarks (optional)
make bench
./benchmarks/strap_bench
- Faster joins and file reads through tighter allocation strategies
- New helpers:
strstartswith
,strendswith
, andstrreplace
- Unified error reporting via
strap_last_error()
andstrap_error_string()
- Scriptable micro-benchmarks with
make bench
#include <stdio.h>
#include "strap.h"
int main(void) {
// Safe line reading
char *line = afgets(stdin);
if (line) {
char *trimmed = strtrim(line);
printf("Trimmed: '%s'\n", trimmed);
free(line);
free(trimmed);
}
// String joining
const char *parts[] = {"Hello", "world", "from", "STRAP"};
char *joined = strjoin(parts, 4, " ");
printf("%s\n", joined);
free(joined);
return 0;
}
📚 See the Wiki for complete documentation, examples, and advanced usage.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
All STRAP APIs set a thread-local error code. On failure, query the cause:
char *trimmed = strtrim(raw_line);
if (!trimmed) {
fprintf(stderr, "STRAP error: %s\n", strap_error_string(strap_last_error()));
return EXIT_FAILURE;
}
Call strap_clear_error()
when you want to reset the status manually.
- Performance optimizations
- Additional string utilities
- Enhanced error handling
- Benchmark suite
- Extended locale-aware helpers
- Optional arena allocator for transient strings
- Timezone-aware time helpers
MIT Licensed - see LICENSE for details.
STRAP - Making C string and time operations safer and more convenient.