gpt4 book ai didi

c - C语言中ls命令的实现

转载 作者:行者123 更新时间:2023-11-30 15:05:41 25 4
gpt4 key购买 nike

我目前正在学习系统编程类(class),教授为我们提供了 ls 命令实现的示例代码

#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
int main (int argc, char *argv[]) {

DIR *dp;
struct dirent *dirp;

if(argc ==1) dp = opendir ("./");

else dp = opendir(argv[1]);

while ((dirp = readdir(dp)) != NULL) printf("%s\n", dirp->d_name);

closedir(dp);
exit(0);
}

但是,当我尝试运行它时,它输出消息“段错误”。这是我所做的图像 test是什么原因导致此消息?

最佳答案

您使用./a.outAssignment1.c调用您的程序。

然后你的程序实际上执行了一个opendir("Assignment1.c");。由于 "Assignment1.c" 是文件而不是目录,因此 opendir 返回 NULL

您天真地将dirp = readdir(dp)dp设置为NULL,这会导致段错误。

您应该测试opendir的返回值,如果它是NULL,则显示错误消息。

阅读opendir man page .

关于c - C语言中ls命令的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39717948/

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