/** * 实现单词补全功能 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <stdarg.h> #define MAX_CHILD 26 #define error(...) logger(stderr, __LINE__, __VA_ARGS__) #define notice(...) logger(stdout, __LINE__, __VA_ARGS__) /** * 定义trie树节点 */ typedef struct node_s{ int count; struct node_s *child[MAX_CHILD]; char words[20]; } node_t; /** * 日志 */ void logger(FILE *fp, int line, const char *fmt, ...){ fprintf(fp, "[line]:%d | ", line); va_list ap; va_start(ap, fmt); vfprintf(fp, fmt, ap); va_end(ap); fprintf(fp, " "); } /** * 创建节点 */ node_t *createNode(){ node_t *node = (node_t *)calloc(1, sizeof(node_t)); if(node == NULL){ error("createNode fail, errno[%d]", errno); } } /** * 添加 */ int insert(node_t *root, char *words){ if(!root || words[0] == '