c - 在c中重新编码unix命令ls(格式化输出)

标签 c algorithm

我正在重新编码 Unix 命令 ls,im 使用多个系统函数,包括但不限于 、 、 函数等。我拥有所需的所有信息,并且已经取得了长足的进步。但是,我需要格式化输出的帮助。

当您运行命令 ls -l 并且输出被格式化时,无论所述文件名的长度如何,所有列的大小都是正确的。

我想知道如何以与 ls 相同的方式格式化我的输出,关于列(只是一般想法而不是实际代码)。我该怎么做?

最佳答案

有各种非打印转义字符可以执行诸如将光标移动到特定位置、更改字体和背景颜色等任务。您可以使用它们将光标移动到计算的位置以实现整齐的列基于 - 的格式,如 ls 命令的输出。您需要考虑的角色如下:

  • \033[l;cH:将光标移动到行l和列c
  • \033[nA:将光标向上移动n行。
  • \033[bB:将光标向下移动n行。
  • \033[nC:将光标向前移动 n 个字符。
  • \033[nD:将光标向后移动 n 个字符。
  • \033[2J:清屏并将光标移动到第 0 行第 0 列
  • \033[K :不移动光标,清除从当前光标位置开始的行。
  • \033[s :存储当前光标位置
  • \033[u :将光标移回之前存储的位置。

例如,以下语句将光标移动到屏幕的左上角并清除第一行,然后将光标返回到其原始位置。

printf("\033[s\033[0;0H\033[K\033[u");

关于c - 在c中重新编码unix命令ls(格式化输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37723160/

相关文章:

java - 算法动画

c - 从麦克风获取音频

c - 使用 O(n) 运行时查找范围内的元素

c++ - 从另一个进程在用户模式下回调,没有额外的线程

c - 订购(语言 C)

c++ - C/C++ 高效位数组

c++ - 从 C++ 中的字节数组中提取非零索引的最快方法是什么

arrays - 为连接组件标记/Blob 提取实现 LSL

arrays - 找到分离数组的方法,使每个子数组的总和小于或等于一个数字

python - hackerrank 上的三元组错误计数