English 中文(简体)
Reorder files and folders
原标题:

I got a list of files and folders using dirent & stat in C, but they are not in the order I want. I want it will list the directories first then files. Ex:

.
..
[dir1]
[dir2]
[file1]
[file2]

Is there a way to do this with dirent? Or I dont want to manually order the output list. Thanks.

问题回答

You will have to sort them if you use opendir/readdir, but you can use scandir(3) (assuming you re on a *nix system) if you want to get all the directory entries sorted.

Make two passes through the dir, first showing only dirs, and in the second showing only files. I d only do this if you just wants dirs-then-files; if you have some detailed sorting criteria, I d store the entries in an array and sort it w/ a custom ordering function.

You will need to read them and sort yourself. Or use a different library function which does it for you.

You can maintain two data structure, one for dir and one for file. Once you start reading directory with dirent, insert into respective structure runtime.

Merge both list in the end with directories and files respectively. This method will finish in one pass O(N) and merge will take just one instruction which is O(1).





相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签