gpt4 book ai didi

c - 模拟 ls 命令的 Linux C 程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:58 25 4
gpt4 key购买 nike

已解决

我正在尝试创建一个程序,其功能类似于使用 C 的默认 ls 命令。我在其中一个属性 (-l) 上遇到了一些问题) 和当前的格式。对于 -l,它没有运行应该使其成为包含 inode 和名称 (argv[2]) 的简单列表的行,而是运行与 -f< 相同的功能.

#include <stdio.h>
#include <sys/types.h>
#include <sys/dir.h>
#include <sys/stat.h>

struct direct **dirs;

int main (int argc, char* argv[])
{
struct stat statb;
int nent, i;
int x = 0;
int y;

char *F = argv[1];
char *l = argv[2];
char *others = argv[3];

nent = scandir (".", &dirs, NULL, NULL);

for (i = 0; i < nent; i ++) {
if(argv[1]) {
stat(dirs[i]->d_name, &statb);

if (y == 0) {
printf("\n%-16s",dirs[i]->d_name);
switch (statb.st_mode & S_IFMT) {
case S_IFDIR :
printf("/\t ");
break;

case S_IFREG :
printf("*\t ");
break;

}
}
else {
printf ("%-16s",dirs[i]->d_name);
switch (statb.st_mode & S_IFMT) {
case S_IFDIR :
printf("/\t ");
break;

case S_IFREG :
printf("*\t ");
break;

}
}

x++;
y = x%5;
}
else if (argv[2]) {
printf("I-node = %d name = %s\n", dirs[i]->d_ino, dirs[i]->d_name);
}
else {

if (y == 0) {
printf("\n%-16s\t ",dirs[i]->d_name);
}
else {
printf("%-16s\t ",dirs[i]->d_name);
}

x++;
y = x%5;

}
}

printf("\n");
}

最佳答案

您永远不会输入else 子句。如果 argv[1] 为 NULL,则 argv[2] 将为 NULL。您只需要解析参数。

关于c - 模拟 ls 命令的 Linux C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com