免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wenqing_9115
打印 上一主题 下一主题

[C] [已解决]自己实现的cp -r ,可有个文件就是拷不到?请帮忙看看。。。多谢 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-03-30 01:25 |只看该作者
嗯,看来基本上就是我的环境有问题了。。。。

我还是明天换个机子试试先。。。

多谢啦。。。

论坛徽章:
0
12 [报告]
发表于 2009-03-30 23:52 |只看该作者
int copyd_d(char *cpd1,char *cpd2){
   static DIR *dp1;
   static DIR *dp2;
   ...............
   static struct dirent *dir;
   static struct stat buf;


  把这几个static去掉,程序就OK了....具体为什么还在研究中....
  本来想着因为要递归,所以用static不会乱掉,可是却因为它出错了....并且卡了很长很长时间.....

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
13 [报告]
发表于 2009-03-31 09:03 |只看该作者

回复 #12 wenqing_9115 的帖子

先道个歉,10楼的帖子里有错误。:wink:
原帖给的情况:
xx/1     (文件)
xx/2   (目录)
xx/2/a (文件)
xx/3(文件)

这样的顺序(按文件排名,在文件夹后边还有文件或文件夹),第一个子文件夹后边的文件没拷到(也不会拷到)。
正如你说的static,遍历完一个子文件夹时,dp1就被改了;
遍历完回到父文件夹,
while((dir=readdir(dp1))!=NULL),dp1已经被改成刚才的子文件夹对应的了。且这个dp1读完了,
while里条件为false,就不会再继续了。



上次测试,实际上是
xx/1
xx/2
xx/3/a
这样的情况,文件夹在最后边,所以我的测试结果是全拷到了。

论坛徽章:
0
14 [报告]
发表于 2009-04-08 10:12 |只看该作者
嗯,你这么一说,就清楚了。。。
开始我还有点想不通。。。谢谢啦。。。

论坛徽章:
0
15 [报告]
发表于 2009-04-08 13:25 |只看该作者

回复 #1 wenqing_9115 的帖子

代码没看,但是提醒一下,你把其他的都删了,然后只留那个考不到的试试,如果能考了,在看看是不是循环有问题导致拷贝会在一定次数内终止
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP