Unix ls

The computer company you work for is introducing a brand new computer line and is developing a new Unix-like operating system to be introduced along with the new computer. Your assignment is to write the formatter for the ls function.
Your program will eventually read input from a pipe (although for now your program will read from the input). Input to your program will consist of a list of (F) filenames that you will sort (ascending based on the ASCII character values) and format into (C) columns based on the length (L) of the longest filename. Filenames will be between 1 and 60 (inclusive) characters in length and will be formatted into left-justified columns. The rightmost column will be the width of the longest filename and all other columns will be the width of the longest filename plus 2. There will be as many columns as will fit in 60 characters. Your program should use as few rows (R) as possible with rows being filled to capacity from left to right.

Input

The input will contain an indefinite number of lists of filenames. Each list will begin with a line containing a single integer (1 <= N <= 100). There will then be N lines each containing one left-justified filename and the entire line's contents (between 1 and 60 characters) are considered to be part of the filename. Allowable characters are alphanumeric (a to z, A to Z, and 0 to 9) and from the following set { ._- } (not including the curly braces). There will be no illegal characters in any of the filenames and no line will be completely empty.

Immediately following the last filename will be the N for the next set or the end of file. You should read and format all sets in the input.

Output

For each set of filenames you should print a line of exactly 60 dashes (-) followed by the formatted columns of filenames. The sorted filenames 1 to R will be listed down column 1; filenames R+1 to 2R listed down column 2; etc.

Sample Input

10
tiny
2short4me
very_long_file_name
shorter
size-1
size2
size3
much_longer_name
12345678.123
mid_size_name
12
Weaser
Alfalfa
Stimey
Buckwheat
Porky
Joe
Darla
Cotton
Butch
Froggy
Mrs_Crabapple
P.D.
19
Mr._French
Jody
Buffy
Sissy
Keith
Danny
Lori
Chris
Shirley
Marsha
Jan
Cindy
Carol
Mike
Greg
Peter
Bobby
Alice
Ruben

Sample Output

12345678.123 size-1
2short4me size2
mid_size_name size3
much_longer_name tiny

shorter very_long_file_name

Alfalfa Cotton Joe Porky
Buckwheat Darla Mrs_Crabapple Stimey

Butch Froggy P.D. Weaser

Alice Chris Jan Marsha Ruben
Bobby Cindy Jody Mike Shirley
Buffy Danny Keith Mr._French Sissy
Carol Greg Lori Peter

0

查看全部1条回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
unix/linux ls命令的实现
Understanding Unix/Linux Programming(Unix/Linux编程实践教程) 学习模式: (1)它能做什么? (2)它是如何实现的? (3)能不能自己编写一个? (实验环境:gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) ls命令学习 (1)ls命令能做什么
Unix - ls命令的简要实现
#include 是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数、readdir函数. opendir函数: DIR *opendir(const char *pathname);返回值:若成功则返回指针,若出错则返回NULL。 struct dirent *readdir(DIR *dp); 返回值:若成功则返回指针,若
unix/linux命令“ls -l”选项输出结果详解
from: http://hi.baidu.com/hoxily/item/12e2a02d03f77e0942634a8e   unix/linux命令“ls -l”选项输出结果详解 下面是我在lucidubuntu使用”ls -l /”的结果: hoxily@ubuntulucid:/$ ll / total 96 drwxr-xr-x 22 root root  40
UVA 400-Unix ls【字符串】
原题网址: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=341 按要求进行排版.....左对齐,不够的补空格............ #include #include #include #in
一、Linux/UNIX操作命令积累【cd、ls、su】
在使用Linux/UNIX系统时,经常会使用文本界面去设置系统或操作系统,作者本人在工作的过程也在不断接触这方面的命令,所以为此特酝酿、准备、开始了本文的编写。本文主要记录自己平时遇到的一些Linux/UNIX下操作命令,记录与整理一下,一可加深印象,二可记录分享。希望各位看官,对于不合适的或有歧义的地方,给予指明与说明,以便共同学习与提高。【转载使用,请注明出处:http://blog.csdn.net/mahoking】
unix ls命令的一个简单实现
unix ls命令的一个简单实现include include include include
UNIX环境高级编程(第二版)中ls(1)命令的简要实现的apue.h头文件不存在问题解决方法
进行本次操作请用root用户,只有独立一行的符号“#”后是在终端输入的命令。 1.APUE2源代码下载:http://www.apuebook.com(我是Linux初学者,使用的是Ubuntu版本。浏览器进入网站,因为我的书是第二版,选择2005对应的版本。左上角的Source Code,点击“The source code for the examples in the bo
UVa 400 Unix ls(排序+输出控制)
原题地址https://vjudge.net/problem/UVA-400 给定n个代表文件名的字符串,按字典序排序,再按列优先输出,每行最多输出60个字符,要求输出的行数最少。(最后一列的列宽为最大字符串长度max_len,其余列的列宽为max_len+2个字符) 解题思路本题是《算法竞赛入门经典》的习题5-1,是排序的水题。要使输出的行数最少,那么每一行就要尽可能输出60个字符,但是由于列
unix/Linux常用命令英文全称与中文解释 man ,su,ps,ls 等等
man: Manual   意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory   显示当前工作路径。 su:Swith user  切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files  列出目录下的文件 ps:Process Status  进程状态 m
UVa--400 Unix ls(格式输出)
UVa 400题解模拟 Unix 的 ls 命令。 输入n以及n个文件名,排序后按照列优先的次序左对齐输出。 注意: The rightmost column will be the width of the longest filename and all other columns will be the width of the longest filename plus 2. 据此
编程实现UNIX下ls-a的功能
今天整理了一下以前学习的知识和做的作业什么的,把以前上《UNIX环境下的高级编程》课的时候做的作业贴出来,跟大家共享一下哈。#include#include#include#include#include#include#include#include#include#includeint main(int argc,char *argv[]){
如何在 Linux/Unix 的 Bash 中打开或关闭 ls 命令颜色显示 | Linux 中国
大多数现代 Linux 发行版和 Unix 系统都有一个定义了文件名称颜色的别名。然后,ls 命令负责在屏幕上显示文件、目录和其他文件系统对象的颜色。-- Vivek Gite本文导航◈ 如何关闭 ls 命令的颜色16%◈ 如何打开 ls 命令的颜色36%◈ 关于 *BSD/macOS/Apple OS X 中 ls 命令的注意点58%◈ 如何临时跳过 ls 命令彩色输出?72%◈ 关于作者79%
【归纳总结】Unix/linux下的进程管理(二):创建进程的函数及其应用、对比
创建进程的函数fork()、vfork()和execl()的介绍 本Unix/linux下创建进程的函数fork和vfork以及它们的差别。
ls 输出全路径
ls|awk -v a=$(pwd) '{print a"/"$0}'
UNIX再学习 -- exec 函数族
我们在讲,文件I/O的时候,简单提到过 exec 函数,讲到 vfork 的时候,也有用到。下面我们来详细介绍下它。参看:UNIX再学习 -- 文件I/O 参看:UNIX再学习 -- 函数 fork 和 vfork一、exec 函数待续
七、Linux/UNIX操作命令积累【touch、chkconfig】
在使用Linux/UNIX下,经常会使用文本界面去设置系统或操作系统,作者本人在工作的过程也在不断接触这方面的命令,所以为此特酝酿、准备、开始了本文的编写。本文主要记录自己平时遇到的一些Linux/UNIX下操作命令,记录与整理一下,一可加深印象,二可记录分享。希望各位看官,对于不合适的或有歧义的地方,给予指明与说明,以便共同学习与提高。【转载使用,请注明出处:http://blog.csdn.net/mahoking】
Unixls命令(不是自己写得,但有可以借鉴的地方)
get ideas:1.按列排序,可以根据横纵坐标来求下标:int cols = (maxcol - M) / (M + 2) + 1, rows = (n - 1) / cols + 1; 2.除了用制表符/t外,可以通过补空的方式输出表格 cout for(int i = 0; i cout #include #include #include using namespace
shell命令:ls命令
ls: #按文件从大到小: ls -S # 按文件从小到大 ls -Sr ls -Srlh 输出000.mp3到049.mp3: ls | grep .*[0-4][0-9].mp3 | tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot; # 将其打包 tar -czf t.tar `ls | grep .*[0-4][0-9].mp3 | tr &amp;quot;\n&amp;quot; &amp;quot; &amp;quot;` 显示最大的前10
unix/Linux--常用命令--英文全称与中文解释
unix/Linux常用命令英文全称与中文解释 man ,su,ps,ls 等等   man: Manual   意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory   意思是密码。 su:Swith user  切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files  列出目录下的
Unix ls
The computer company you work for is introducing a brand new computer line and is developing a new Unix-like operating system to be introduced along with the new computer. Your assignment is to write the formatter for the ls function.nYour program will eventually read input from a pipe (although for now your program will read from the input). Input to your program will consist of a list of (F) filenames that you will sort (ascending based on the ASCII character values) and format into (C) columns based on the length (L) of the longest filename. Filenames will be between 1 and 60 (inclusive) characters in length and will be formatted into left-justified columns. The rightmost column will be the width of the longest filename and all other columns will be the width of the longest filename plus 2. There will be as many columns as will fit in 60 characters. Your program should use as few rows (R) as possible with rows being filled to capacity from left to right.nnnInputnnThe input will contain an indefinite number of lists of filenames. Each list will begin with a line containing a single integer (1 <= N <= 100). There will then be N lines each containing one left-justified filename and the entire line's contents (between 1 and 60 characters) are considered to be part of the filename. Allowable characters are alphanumeric (a to z, A to Z, and 0 to 9) and from the following set ._- (not including the curly braces). There will be no illegal characters in any of the filenames and no line will be completely empty.nnImmediately following the last filename will be the N for the next set or the end of file. You should read and format all sets in the input.nnnOutputnnFor each set of filenames you should print a line of exactly 60 dashes (-) followed by the formatted columns of filenames. The sorted filenames 1 to R will be listed down column 1; filenames R+1 to 2R listed down column 2; etc.nnnSample Inputnn10ntinyn2short4menvery_long_file_namenshorternsize-1nsize2nsize3nmuch_longer_namen12345678.123nmid_size_namen12nWeasernAlfalfanStimeynBuckwheatnPorkynJoenDarlanCottonnButchnFroggynMrs_CrabapplenP.D.n19nMr._FrenchnJodynBuffynSissynKeithnDannynLorinChrisnShirleynMarshanJannCindynCarolnMikenGregnPeternBobbynAlicenRubennnnSample Outputn------------------------------------------------------------n12345678.123 size-1n2short4me size2nmid_size_name size3nmuch_longer_name tinynshorter very_long_file_namen------------------------------------------------------------nAlfalfa Cotton Joe PorkynBuckwheat Darla Mrs_Crabapple StimeynButch Froggy P.D. Weasern------------------------------------------------------------nAlice Chris Jan Marsha RubennBobby Cindy Jody Mike ShirleynBuffy Danny Keith Mr._French SissynCarol Greg Lori Peter
Linux/Unix下grep命令使用的几个例子[grep Examples]
grep 语法 grep 'word' filename grep 'string1 string2' filename cat otherfile | grep 'something' command | grep 'something' command option1 | grep 'data' grep --color 'data' fileName 基
linux查看目录的四种方法(ls只显示目录)
linux如何只列出目录?下面介绍4种方法列出当前路径下的目录,大家参考使用吧 1.ls -d * 复制代码代码如下: amosli@amosli-pc:~$ ls -d * %APPDATA%     develop           many                    sorted.txt  workspace bank         
【Unix/Linux】【命令】【文件,目录操作工具】列出所有子目录与文件——ls (ll)命令
ls命令是Linux下最常用的命令。ls命令就是list的缩写。缺省下ls用来打印当前目录的清单。如果ls指定其他目录,那么就会显式指定目录里的文件及文件夹清单。通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限等等。 命令格式: ls [选项] [目录名] 常用参数: -a         列出目录下的所有文件,包括以 . 开头的隐含文件。 -b
Perl 脚本中使用ls 获取目录名或文件名注意事项
如果没有设置,获取有可能导致命令行下用ls -l 执行的结果和在perl 中执行的结果时间显示不一致,导致获取文件名或目录失败。 如: 在shell 中执行ls 命令显示如下格式: drwxr-xr-x 6 root root 4096 06-02 19:57 1234 在perl 中ls -l 则显示如下的格式: drwxr-xr-x 6 root root 4096 Jun  2 1
linux ls 按照文件大小排序
一般我们用作在lunux查询文件都习惯是ls -ltr  按照时间逆序排列 但是有的时候比如为了清理日志啥的想要按照大小排列一下,清理最大的嘛。 所以就需要 ls -lS  按照大小排列(从大到小)  如果想要从小到大 排列就是ls -lSr    r就是逆序的意思。 还有之前看其他文章说加一个-h 表示 -numan-readable   单位是k或者M 比较容易看
Unix痛恨者手册--巨经典
     Unix痛恨者手册转载自:Simson Garfinkel, Daniel Weise, Steven Strassmann原文由pengchengzou张贴     2003年1月24日张贴者: pengchengzou (old hand)张贴日期 06/20/02 21:33一本很有趣的书, 是那些用惯UNIX的人对UNIX的各种指责,诋毁,谩骂和嘲笑. 是由爱而生的恨. 即使当成
UNIX下的ls命令的输出格式(ZT)
UNIX下的ls命令的输出格式 作者:一笑而过 2006-05-22 12:39:59 标签:    这是UNIX下的ls命令的输出格式,Column 2 - Number of linksColumn 3 - Owner of the file. Normally the owner of the file is the user accountthat origin
Ubuntu把语言环境变量改为英文
将Ubuntu系统语言环境改为英文的en_US.UTF-8 查看当前系统语言环境 locale编辑配置文件,将zh_US.UTF-8改为en_US.UTF-8,zh改为en sudo nano /etc/default/localeLANG="en_US.UTF-8"LANGUAGE="en_US:en"继续查看更改后的系统语言变量,如果出现下列错误,说明没安装en
Linux常用指令思维导图
后面还会更新~
unix ls命令实现
c实现unix ls -l命令,里边注释不是很多,但是每个函数都不难
ls_正则表达式_验证rwx权限
一、 正则表达式 界限:^  行开头;      $  行结尾。 频率:?  出现0次或1次;  +  出现至少1次。 内容:d  字母;    \d  数字;    .  除了回车和换行之外的任意字符。 二、 举例 ls -l -F | grep [/s] 图1-1 ls搭配正则表达式只显示目录  ls -l | grep ^d 图1-2 ls搭正则表达式只显示目...
Linux系统指令‘ls’详细用法解析
1.不带任何选项列出文件 :不能看到文件类型、大小、修改日期和时间、权限以及链接这样具体的信息的。 2.带-l选项列出文件列表 :能展示是文件还是目录,它的大小、修改日期、时间,文件或目录的名字以及文件的属性和它的权限。 3.列出隐藏文件 :列出所有以‘.’开头的隐藏文件 4.用-lh选项以易读的方式显示 5.以尾部为‘/’列出目录,以尾部为‘*’列出文件 6.
unix命令大全详解-完整版_command方式:
UNIX命令大全详解-完整版 command方式:任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入都引起立即反映insert方式:任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入in
ls指定日期和时间输出格式
ls -l --time-style=xxx xxx:full-iso, long-iso, iso, locale, +FORMAT =========几种输出格式,默认输出是:locale格式============= [root^_^fedora16 ~]# ll --time-style=full-iso 总用量 156 -rw-------. 1 root root
Linux ls -l命令的实现
使用方法:ls  [目录名]    输出结果:此目录下的文件和子目录的详细信息 ls -l工作原理: ------打开目录文件 //opendir(dirname)系统调用 -----while(not end of 目录文件) -----{  -----   读取一个目录项 //readdir()系统调用 -----   显示文件的详细信息 //文件详细信息从另外的途经获
UNIX常用命令行指令(4)(通配符及命令帮助)
UNIX教程四 4.1通配符 *通配符 字符*称为通配符,将与文件(或目录)名称中的一个或多个字符匹配。例如,在您的unixstuff 目录中,键入 %ls list * 这将列出当前目录中以list ...开头的所有文件。 尝试输入 %ls *列表 这将列出当前目录中以....结尾的所有文件 ??通配符 人物?将匹配一个字符。 所以?
export命令(类Unix系统的环境变量配置命令方法)
1.  2. 为jvm配置2个G大小的内存; 注意:这种方式的配置,作用域仅限于这个bash里是有效的,如; 如果我们要
Linux ls命令详解
ls 命令可以说是linux下最常用的命令之一。 -a 列出目录下的所有文件,包括以 . 开头的隐含文件。(后有详解) -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。 -c 输出文件的 i 节点的修改时间,并以此排序。 -d 将目录象文件一样显示,而不是显示其下的文件。 -e 输出时间的全部信息,而不是输出简略信息。 -f -U 对输出的文件不排
运行apue (unix 环境高级编程)第一个例子
拿到APUE第三版,大家肯定都是想验证书上的代码,用调试代码的过程来学习本书。但是Linux不像Windows,linux是一个free(自由)软件,free软件带来的问题就是运行一个小小的程序都要折腾半天。现在把运行第一个程序的过程记录下来,以供后来查阅。 第一步,当然是下载书中的源码,省的自己费尽的敲,下载的是第三版,apue.3e,这里不得不吐槽一下,里面的代码组织很乱,不是按照章节列出的
关于Linux中权限列中的加号及点的深度探索
一、综述 Linux中,ls -l命令可谓是最常用不过了。命令显示结果中的第一列也是我们比较关注的地方,一般说法是表示权限的字符占10个位置。可是,我们也经常看到在这一列中第十一个位置也有内容显示,最常见的非那个点(.)莫属了,还有加号(+)也会出现在这个位置,这到底是怎么回事呢?让我们亲手来实践一下吧? 二、关于权限列内的点(.) 2.1 让我们来看一下根目录。 [root@DC...
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 长江师范学院大数据 大数据最新视频

相似问题