如何使用c中的系统调用按照当前目录的大小来显示文件名以上升顺序显示?
我正在尝试使用c中的系统调用来根据其大小对文件名进行排序。
我尝试了这个...
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <limits.h>
#include <string.h>
int main() {
DIR *dir1, *dir2;
int fd, cur_size, min_size;
struct dirent *dirent1, *dirent2;
struct stat st1, st2;
char min_file_name[1000];
char filename[1000];
dir1 = opendir(".");
while ((dirent1 = readdir(dir1)) != NULL) {
min_size = INT_MAX;
dir2 = opendir(".");
while ((dirent2 = readdir(dir2)) != NULL) {
stat(dirent2->d_name, &st1);
cur_size = st1.st_size;
strcpy(filename, dirent2->d_name);
if (cur_size <= min_size && strcmp(min_file_name, filename) != 0) {
min_size = cur_size;
strcpy(min_file_name, dirent2->d_name);
}
}
printf("File name = %s || size = %d \n", min_file_name, min_size);
}
}
输出
amol@amol-Ideapad-320:~/AOS$ gcc q3.c
amol@amol-Ideapad-320:~/AOS$ ./a.out
File name = || size = 0
File name = || size = 0
File name = || size = 0
File name = || size = 0
I am trying to sort file names according to their sizes using a system call in c.
I tried this...
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <limits.h>
#include <string.h>
int main() {
DIR *dir1, *dir2;
int fd, cur_size, min_size;
struct dirent *dirent1, *dirent2;
struct stat st1, st2;
char min_file_name[1000];
char filename[1000];
dir1 = opendir(".");
while ((dirent1 = readdir(dir1)) != NULL) {
min_size = INT_MAX;
dir2 = opendir(".");
while ((dirent2 = readdir(dir2)) != NULL) {
stat(dirent2->d_name, &st1);
cur_size = st1.st_size;
strcpy(filename, dirent2->d_name);
if (cur_size <= min_size && strcmp(min_file_name, filename) != 0) {
min_size = cur_size;
strcpy(min_file_name, dirent2->d_name);
}
}
printf("File name = %s || size = %d \n", min_file_name, min_size);
}
}
Output
amol@amol-Ideapad-320:~/AOS$ gcc q3.c
amol@amol-Ideapad-320:~/AOS$ ./a.out
File name = || size = 0
File name = || size = 0
File name = || size = 0
File name = || size = 0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
恐怕我不了解您的嵌套循环方法中的逻辑。
要以给定的顺序产生列表,您可以构造目录中的条目的排序列表并打印出来。
这是一个修改版本,使用链接列表上的简单二次插入排序:
I'm afraid I don't understand the logic in your nested loop approach.
To produce a list in a given order, you can construct a sorted list of the entries in the directory and print that.
Here is a modified version using a simplistic quadratic insertion sort on a linked list: