QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 864|回复: 6

我在读UNIX环境高级编程,有一个不懂的问题

[复制链接]
发表于 2003-8-17 12:17:16 | 显示全部楼层 |阅读模式
[php]

#include <sys/types.h>
#include <stdio.h>
#include <dirent.h>

int main(int argc, char **argv)
{
        DIR *dp = NULL;
        struct dirent *dirp = NULL;

        if (argc != 2) {
                printf("a signal argument (the directory name) is required\n");
                exit(0);
        }
       
        if (dp = opendir(argv[1]) == NULL) {
                printf("can't open %s\n", argv[1]);
                exit(0);
        }

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

[/php]

编译出来执行出错,求助高手
发表于 2003-8-17 15:09:24 | 显示全部楼层
能把 你 的 出错信息贴出来吗?
回复

使用道具 举报

 楼主| 发表于 2003-8-17 15:24:38 | 显示全部楼层
Seg***** Failed
回复

使用道具 举报

发表于 2003-8-17 15:53:05 | 显示全部楼层
int main(int argc, char **argv)
argv在这里好像不是一个数组吧?
而你下面用了argv[1]
改为:
int main(int argc, char *argv[])
看看:
回复

使用道具 举报

 楼主| 发表于 2003-8-17 20:22:46 | 显示全部楼层
[quote:7d8fdddacd="dostolinux"]int main(int argc, char **argv)
argv在这里好像不是一个数组吧?
而你下面用了argv[1]
改为:
int main(int argc, char *argv[])
看看:[/quote]

这样写时没错的,我在win就这么写

那个错误我写错了
一股脑该是
segmentation fault

看起来想指针越界
回复

使用道具 举报

发表于 2003-8-18 04:56:02 | 显示全部楼层
if (dp = opendir(argv[1]) == NULL) {
少一对括弧,应该是:
if ((dp = opendir(argv[1])) == NULL) {
回复

使用道具 举报

 楼主| 发表于 2003-8-18 08:18:26 | 显示全部楼层
奥,谢谢,竟然是这里错了,太感谢了

这种错误我已经不只发生一次了,看来以后得注意了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 05:55 , Processed in 0.035888 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表