#ifndef FILE_COMPLETE_H #define FILE_COMPLETE_H /** * @file file_complete.h * @brief 控制台读取用户输入时,文件自动补全功能 * * 编码说明: * - 如果程序运行环境使用 GBK 编码,请手动定义宏 `BINARY_GBK`。 * - 默认编码为 UTF-8。 * * 功能说明: * - 支持添加截止符号以确定路径补全范围。 * - 提供替代 `std::getline` 的用户输入读取函数。 * - 提供控制台光标控制与线程安全打印机制。 */ #ifdef __cplusplus extern "C" { #endif /** * @brief 设置路径补全的截止符号。 * * @param deadline_ch 截止符号(例如 '|')。 */ void fc_append(char deadline_ch); /** * @brief 设置补全提示的前缀显示内容。 * * @param header 要显示的前缀字符串。 */ void fc_set_header(const char* h); /** * @brief 读取用户输入,替代 `std::getline`。 * * @return 成功返回堆分配的字符串,需使用 `fc_free` 释放; * 如果返回 `NULL`,表示检测到终止命令(如 Ctrl+C)。 */ char* fc_readline(void); /** * @brief 启用控制台光标显示。 */ void fc_enable_cur(void); /** * @brief 禁用控制台光标显示。 */ void fc_disable_cur(void); /** * @brief 锁定打印,确保多线程环境下的打印顺序一致。 */ void fc_lock_print(void); /** * @brief 解锁打印,允许其他线程继续输出。 */ void fc_unlock_print(void); /** * @brief 释放 `fc_readline` 返回的字符串内存。 * * @param str 需要释放的字符串指针。 */ void fc_free(char* str); /** * @brief 开启特殊字符替换,如 ~ 回车后会替换为家目录路径。 */ void fc_turn_on(); /** * @brief 关闭殊字符替换 */ void fc_turn_off(); /** * @brief 添加输入历史记录。 * * @param his_input 输入内容。 */ void fc_add_his(const char* his_input); /** * @brief 恢复默认终端颜色 */ void fc_recovery_color(); #ifdef __cplusplus } #endif #endif /* FILE_COMPLETE_H */