1.字符串管理模块:
这个文件主要实现了能够自动扩展并灵活拼接的字符串类型,具体作用可以参考C++的string类型作用。
/*stringutils.h*/ #ifndef STRINGUTILS_H #define STRINGUTILS_H #include<stdlib.h> typedef struct { char *ptr; size_t size; size_t len; }string; string* string_init(); string* string_init_str(const char *str); void string_free(string *s); void string_reset(string *s); void string_extend(string *s, size_t new_len); int string_copy_len(string *s, const char *str, size_t str_len); int string_copy(string *s, const char *str); int string_append_string(string *s, string *s2); int string_append_int(string *s, int i); int string_append_len(string *s, const char *str, size_t str_len); int string_append(string *s, const char *str); int string_append_ch(string *s, char ch); #endif /*stringutils.c*/ #include<assert.h> #include<string.h> #include<stdio.h> #include"stringutils.h" #define STRING_SIZE_INC 64 string* string_init() { string *s; s = malloc(sizeof(*s)); s->ptr = NULL; s->size = s->len = 0; return s; } string* string_init_str(const char *str) { string *s = string_init(); string_copy(s, str); return s; } void string_free(string *s) { if (!s) { return; } free(s->ptr); free(s); } void string_reset(string *s) { assert( s != NULL); if (s->size > 0) { s->ptr[0] = '