我的任务是编写另一个小版本的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
答案 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
可以填充字符串,这就是我们在这里所做的。首先获取最长的文件名,然后使用它来填充其余文件。