|
在拷贝某个文件夹下的所有所有文件的程序中,出现错误。
在程序中用箭头指出来的地方,就是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]作的属性操作影响了后面的打开呢?
请大家帮忙看看啦!多谢多谢~~ |
|