当前位置: 技术问答>linux和unix
写了个将目录下的所有大写文件名改为小写的程序,但是有点问题,大家帮忙看看?谢谢!
来源: 互联网 发布时间:2015-10-21
本文导语: 写了个将目录下的所有大写文件名改为小写的程序,但是有点问题,大家帮忙看看?谢谢! 程序如下: #include #include #include #include #include int main(void) { int length,i; char *oldname=NULL,newname[256]; D...
写了个将目录下的所有大写文件名改为小写的程序,但是有点问题,大家帮忙看看?谢谢!
程序如下:
#include
#include
#include
#include
#include
int main(void)
{
int length,i;
char *oldname=NULL,newname[256];
DIR *dir;
struct dirent *ent;
if(!(dir=opendir(".")))
{
perror("opendir is error");
return 1;
}
errno=0;
while((ent=readdir(dir)))
{
//puts(ent->d_name);
oldname=ent->d_name;
length=strlen(oldname);
//printf("%st%dn",oldname,length);
for(i=0;id_name,newname);
// rename(ent->d_name,newname);
errno=0;
}
if(errno)
{
perror("readdir is error");
return 1;
}
closedir(dir);
return 0;
}
基本能转,但是有些转完后的文件名末尾有一些乱七八糟的字符
原目录内容:
rename sdfDd3.hTm SDFSD2.HTM sdfsd41.htm SDFSD5.HTM SDFSD76.HTM SDFSD8.HTM
rename.c SDFSD1.HTM SDFSD3.HTM SDFSD4.HTM SDFSD6.HTM SDFSD7.HTM SDFSD.HTM
转换后内容:
.
..
rename? -->error
sdfsd1.htm? --error
sdfsd.htmm -->error
sdfsd2.htm
sdfsd3.htm
sdfsd4.htm
sdfsd5.htm
sdfsd6.htm
rename.ct -->error
sdfsd7.htm
sdfsd8.htm
sdfsd76.htm
sdfsd41.htm
sdfdd3.htmm --->error
请问哪位大侠明白是怎么回事?谢谢!
程序如下:
#include
#include
#include
#include
#include
int main(void)
{
int length,i;
char *oldname=NULL,newname[256];
DIR *dir;
struct dirent *ent;
if(!(dir=opendir(".")))
{
perror("opendir is error");
return 1;
}
errno=0;
while((ent=readdir(dir)))
{
//puts(ent->d_name);
oldname=ent->d_name;
length=strlen(oldname);
//printf("%st%dn",oldname,length);
for(i=0;id_name,newname);
// rename(ent->d_name,newname);
errno=0;
}
if(errno)
{
perror("readdir is error");
return 1;
}
closedir(dir);
return 0;
}
基本能转,但是有些转完后的文件名末尾有一些乱七八糟的字符
原目录内容:
rename sdfDd3.hTm SDFSD2.HTM sdfsd41.htm SDFSD5.HTM SDFSD76.HTM SDFSD8.HTM
rename.c SDFSD1.HTM SDFSD3.HTM SDFSD4.HTM SDFSD6.HTM SDFSD7.HTM SDFSD.HTM
转换后内容:
.
..
rename? -->error
sdfsd1.htm? --error
sdfsd.htmm -->error
sdfsd2.htm
sdfsd3.htm
sdfsd4.htm
sdfsd5.htm
sdfsd6.htm
rename.ct -->error
sdfsd7.htm
sdfsd8.htm
sdfsd76.htm
sdfsd41.htm
sdfdd3.htmm --->error
请问哪位大侠明白是怎么回事?谢谢!
|
//newname[length+1]='';
//改为
newname[length] = '';
//就好了.
//改为
newname[length] = '';
//就好了.
|
c 里面就是这样写了,可以用shell编程(自己试吧 :)