mylib.h
来自「自己做的常用库和实现的数据结构。public domain.」· C头文件 代码 · 共 74 行
H
74 行
/* Misc toolkit. * * Written by Cyril Hu (cyrilhu@gmail.com), public domain. */#ifndef _MYLIB_H_#define _MYLIB_H_#include "my.h"#undef min#define min(a,b) ( (a) < (b) ? (a) : (b) )#undef max#define max(a,b) ( (a) > (b) ? (a) : (b) )/* Print error message on stderr, then invoke exit(EXIT_FAILURE). */void fatal_error(const char *msg);/* Invoke putchar('\a'). */void beep(void);/* Various compare unit for function like qsort(), pick up what you need * according to cast type(c=char, i=int, etc) and keyword order(a or d). */int ccmpa (const void *a, const void *b);int ccmpd (const void *a, const void *b);int uccmpa (const void *a, const void *b);int uccmpd (const void *a, const void *b);int icmpa (const void *a, const void *b);int icmpd (const void *a, const void *b);int uicmpa (const void *a, const void *b);int uicmpd (const void *a, const void *b);int lcmpa (const void *a, const void *b);int lcmpd (const void *a, const void *b);int ulcmpa (const void *a, const void *b);int ulcmpd (const void *a, const void *b);#if defined(__ISOC) && (__ISOC >= 1999)int llcmpa (const void *a, const void *b);int llcmpd (const void *a, const void *b);int ullcmpa (const void *a, const void *b);int ullcmpd (const void *a, const void *b);#endif/* Available flag: 'm', 'c', 'r'. invoke malloc/calloc/realloc() correspondingly, * and handle it's return value. (if NULL, invoke exit(EXIT_FAILURE)). */void *mem(const char flag, ...);/* Invoke fopen() and check it's return value; * if NULL, invoke exit(EXIT_FAILURE), * else return fopen()'s return value. */FILE *ffopen(const char *path, const char *mode);/* Get array's NO. offset element. */void *getelem(void *base, size_t size, size_t offset);/* Check if array is keyword ordered or not. */bool asc_or_desc(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));/* Find array's min value or max value element. */void *min_or_max(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));/* Find array's medium value element. if(qsort_flag) qsort() will be invoked; * otherwise make sure array is keyword ordered. */void *medium(int qsort_flag, void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));/* Bubble sort source array. */void bsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *), void (*swap)(void *, void *));/* Selection sort source array. */void ssort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *), void (*swap)(void *, void *));#endif /* _MYLIB_H_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?