如何在linux中控制终端输出格式?

时间:2014-10-22 14:07:24

标签: c format ls

我的任务是编写另一个小版本的LS命令。我成功地将目录和存储的文件名读入已排序的数组中。我的问题是如何以列格式打印出来。以及如何使用系统调用ioctl()来帮助我格式化?

   $ ls
   file.txt       file2.txt      file5.txt      file8.txt
   file0.txt      file3.txt      file6.txt      file9.txt
   file1.txt      file4.txt      file7.txt

1 个答案:

答案 0 :(得分:0)

假设filenames是一个包含带有文件名的C字符串的数组,而filenames_size是该数组中C字符串的数量。

char **filenames;
size_t filenames_size;
size_t filenames_len = 0;
for (size_t i = 0; i < filenames_size; ++i) {
    size_t len = strlen(filenames[i]);
    if (filenames_len < len) {
        filenames_len = len;
    }
}
for (size_t i = 0; i < filenames_size; ++i) {
    printf("rwxrwxrwx %-*s 10KB\n", filenames_len, filenames[i]);
}

printf可以填充字符串,这就是我们在这里所做的。首先获取最长的文件名,然后使用它来填充其余文件。