QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1272|回复: 1

[求助]opendir() 为什么打不开目录??

[复制链接]
发表于 2006-4-29 00:08:16 | 显示全部楼层 |阅读模式
在拷贝某个文件夹下的所有所有文件的程序中,出现错误。

在程序中用箭头指出来的地方,就是opendir() 的位置。一运行就提示 printf() 输出的语句 “open directory error!”也就是说打不开制定的文件夹 argv[1]

程序如下:
[code:1]
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>

void cpfiles(char *src,char *des,char name[])

int main(int argc,char *argv[])
{
       struct stat attrib;
       struct dirent *fname;
       int n;
       DIR *dp;

       if(argc!=3)

       {

            fprintf(stderr,"Usage: %s fromfile tofile\n\a",argv[0]);

            exit(1);

       }


        lstat(argv[1],&attrib);

        if(S_ISDIR(attrib.st_mode))
        {
            for(n=0; ; )
            {
           ——〉 if((dp=opendir(argv[1]))==NULL)〈——
                         fprint("open directory error!\n");

                 seekdir(dp,n++);

                 if((fname=readdir(dp))==NULL);

..........................这个 for 循环还很长的,遇到合适的条件就会 break 出去..后面的就省略了哦
[/code:1]
后来又写了一个测试小程序:
[code:1]

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>

int main(int argc,char *argv[])
{
           DIR *dp;

           if((dp=opendir(argv[1]))==NULL);
               fprint("open directory error!\n");

           return0;
}
[/code:1]
运行没错!

这两个程序“./”时设置的路径参数,也就是将要被拷贝的源文件夹路径完全一样,可是上面那个程序opendir 出错,而下面的测试程序却没有!!

不知道是不是在对 argv[1]作的属性操作影响了后面的打开呢?

请大家帮忙看看啦!多谢多谢~~
发表于 2006-4-29 11:34:56 | 显示全部楼层
加个
[code:1]
else
      printf("open directory successfully\n");
[/code:1]
看看,是不是目录被打开n次了。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 18:30 , Processed in 0.038429 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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