免费注册 查看新帖 |

Chinaunix

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

rename为什么不执行? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-01-21 19:06 |只看该作者

rename为什么不执行?

原帖由 "zhanggz" 发表:
len = strlen(name);
           dirp = opendir(".";
           while ((dp = readdir(dirp)) != NULL)
                   if (dp->;d_namlen == len && !strcmp(dp->;d_name, name)) {
       ..........


dirp = opendir(".";

dirp = opendir(".";
应该检查返回值dirp

论坛徽章:
0
12 [报告]
发表于 2003-01-21 19:08 |只看该作者

rename为什么不执行?

原帖由 "lovebbs" 发表:
                        i++;
                }
                rename(oldfile,newfile);
        }while(fn);
        closedir(dp);
}


dp=opendir("/home/gzhy/123";
do
{
fn=readdir(dp);
strcpy(oldfile,fn->;d_name);
strcpy(newfile,fn->;d_name);
i=0;
while(newfile)
{
if(newfile>;64 &amp;&amp; newfile<91)
newfile=newfile+32;
i++;
}
对函数的返回值应该检查
如readdir
opendir
是不是返回null

论坛徽章:
0
13 [报告]
发表于 2003-01-21 20:20 |只看该作者

rename为什么不执行?

我觉得是循环的问题。
还有请问getcwd和opdir这两个函数的异同点。

论坛徽章:
0
14 [报告]
发表于 2003-01-21 20:22 |只看该作者

rename为什么不执行?

ps:不要意思,打错了。是getcwd 和opendir,readdir的区别。谢谢

论坛徽章:
0
15 [报告]
发表于 2003-01-22 08:48 |只看该作者

rename为什么不执行?

一个是打开目录
当然可以打开当前路径的
但是你不可能知道当前路径的绝对路径是什么

另一个是返回当前路径
但是不打开目录
你不可能读

论坛徽章:
0
16 [报告]
发表于 2003-01-22 11:01 |只看该作者

rename为什么不执行?

按照楼上的意见修改了代码,没有Segmentation fault了。但是,rename还是不行,我查了返回值,每次都是错误。
#include <sys/types.h>;
#include <unistd.h>;
#include <stdio.h>;
#include <string.h>;
#include <ctype.h>;
#include <dirent.h>;
#include <linux/unistd.h>;

int main(int argc,char *argv[])
{
        char oldfile[64]={},newfile[64]={};
        int i;
        DIR *dp;
        struct dirent *fn;
        memset(oldfile, 0, sizeof(oldfile));
        memset(newfile, 0, sizeof(newfile));
        dp=opendir("/home/gzhy/123";
        do
        {
                fn=readdir(dp);
                if(!fn) break;
                strcpy(oldfile,fn->;d_name);
                strcpy(newfile,fn->;d_name);
                i=0;
                while(newfile)
                {
                        if(newfile>;64 &amp;&amp; newfile<91)
                                newfile=newfile+32;
                        i++;
                }
                printf("%s\t%s\n",oldfile,newfile);
                if(strcmp(newfile,oldfile))
                {
                        if(rename(oldfile,newfile)==-1)
                                printf("error in rename file\n";
                }
        }while(fn);
        closedir(dp);
}


运行结果:
[gzhy@BB4251X gzhy]$ ./a.out
.       .
..      ..
1.JPG   1.jpg
error in rename file
2.JPG   2.jpg
error in rename file
3.JPG   3.jpg
error in rename file
4.jpg   4.jpg
5.jpg   5.jpg

论坛徽章:
0
17 [报告]
发表于 2003-01-22 12:19 |只看该作者

rename为什么不执行?


  1. if(strcmp(newfile,oldfile))
  2. {
  3. if(rename(oldfile,newfile)==-1)
  4. perror("error in rename file\n");  //改用perror看看错误类型是什么
  5. }
  6. }while(fn);
  7. closedir(dp);
  8. }



复制代码

论坛徽章:
0
18 [报告]
发表于 2003-01-22 14:14 |只看该作者

rename为什么不执行?

原帖由 "无双" 发表:

if(strcmp(newfile,oldfile))
{
if(rename(oldfile,newfile)==-1)
perror("error in rename file\n";  //改用perror看看错误类型是什么
}
}while(fn);
closedir(dp);
}


结果:
[gzhy@BB4251X gzhy]$ ./a.out
.       .
..      ..
2.JPG   2.jpg
error in rename file
: No such file or directory
3.JPG   3.jpg
error in rename file
: No such file or directory
4.jpg   4.jpg
5.jpg   5.jpg
1.jpg   1.jpg

论坛徽章:
0
19 [报告]
发表于 2003-01-23 09:15 |只看该作者

rename为什么不执行?

我觉得加一句
dp=opendir("/home/gzhy/123";
if (dp == NULL)
{
   printf("open directory error\n";
   return;
}
说不定连目录都没大开呢。我瞎想的哦。

论坛徽章:
0
20 [报告]
发表于 2003-01-23 10:19 |只看该作者

rename为什么不执行?

2.JPG 文件是不是不存在、
如果不存在就没有办法rename了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP