您的位置:

c语言批量重名,批量重命名代码

本文目录一览:

C语言,关于局部变量重名的问题。

对于这道题你可以由外向内这样分。

单个文件中分为3个级别的空间:

函数外一个空间:全局变量,具有静态存储,从定义出到这个文件结尾范围的函数可以使用

函数内:自动变量,离开函数就释放

复合体(大括号内):自动变量,离开大括号就自动释放

说明:大致上就是这3部分,内和外有同名的,内将屏蔽外部变量。但是在同一级上的同名将导致出现多次定义的错误

多个文件涉及:只能有一个定义的外部链接

(c++的话还有类和名称空间)

你的第一个例子2个x的定义都是在main函数内的同一级上,重复定义。

第二个例子int x=3只能在大括号中生存,而且屏蔽了x=1的那个定义。

用C语言批量更改文件名

#include stdio.h

#include sys/types.h

#include sys/stat.h

#include unistd.h

#include dirent.h

#include string.h

#include iconv.h

#include errno.h

/*int to_iconv(char *in,size_t in_bytes,char *out,size_t out_bytes,

const char *from,const char *to)*/

int to_iconv(char *in,char *out,size_t out_bytes,const char *from,const char *to)

{

iconv_t cd;

size_t in_bytes=strlen(in);

//size_t out_bytes;

if((cd=iconv_open(to,from)) == (iconv_t)-1)

{

perror("iconv_open");

return -1;

}

if(iconv(cd,in,in_bytes,out,out_bytes) == -1)

{

perror("iconv");

return -1;

}

iconv_close(cd);

return 0;

}

void read_and_iconv(char *path,const char *from,const char *to)

{

DIR *dirp;

struct dirent *dir;

struct stat buf;

char temp[512]; //用于保存转换后的文件名称

if((dirp=opendir(path)) == NULL) //读取文件夹

{

perror("opendir");

return;

}

chdir(path); //进入到该文件夹内部

while(dir=readdir(dirp)) //读取该文件夹下所有文件

{

if((strcmp(dir-d_name,".") == 0) || (strcmp(dir-d_name,"..") == 0))

//过滤掉.以及..文件夹,不然会死循环的

continue;

bzero(temp,sizeof(temp));

to_iconv(dir-d_name,temp,sizeof(temp),from,to); //进行编码转换

rename(dir-d_name,temp); //进行重命名

printf("rename %s to %s\n",dir-d_name,temp);

stat(temp,buf);

if(S_ISDIR(buf.st_mode)) //判断当前读取的文件是否为文件夹

{

read_and_iconv(temp,from,to); //如果是则递归处理

chdir(".."); //处理完成后一定要记得返回上一层目录哦,不然其它文件就无法处理了

}

}

closedir(dirp);

}

int main(int argc,char **argv)

{

read_and_iconv(argv[1],argv[2],argv[3]);

/*第一个参数是要转换的文件夹所在的文件夹名称

*第二个参数是文件名称所使用的编码(这里为GBK)

*第三个参数是要转换成何种编码(这里为UTF-8)

*/

return 0;

}

关于c语言查询账号重名的一道题

#includestdio.h

#includestdlib.h

#includestring.h

int main()

{

char a[50];

char b[10][10] = { { "Alice" }, { "Bob" }, { "Lucky" }, { "Kitty" }, { "Tim" }, { "Lucy" }, { "Jim" }, { "Helena" } };

int c[1000], x, y, z, i, j;

while (1){

scanf("%s", a);

if (!strcmp(a, "END"))

break;

y = 0;

for (i = 0; i  10; i++)

{

z = strcmp(a, b[i]);

if (z == 0)

y = 1;

}

if (y == 1)

printf("NO");

else

printf("Yes");

printf("\n");

}

system("pause");

return 0;

}

c语言中局部变量可以同名么?

在C语言中,相同作用域范围的局部变量不可以同名。所以,在不同作用域下,可以出现局部变量同名的情况。

1 在不同函数中。

函数不同,局部变量完全无关,自然可以使用相同的名字。

2 在同一函数中,但作用域不同。

局部变量的作用域是定义位置,到所在大括号结束。

所以只要两个局部变量属于不同的大括号中,就可以同名。

比如

void func()

{

    int a;

    while(1)

    {

        int a;

    }

    for(;;)

    {

        int a;

    }

}

这里面,第一个a的作用域包含了第二个和第三个,而后两个之间作用域不相关。三个a分别属于三个不同的大括号,可以同名。

c语言如何一次改变多个相同的参量名字

你说的这些是C++的函数重载,C++是可以的,但C语言不支持函数重载

比如:

void fun(int n) 与int fun(int n)就是名称相同,返回类型不同,参数相同

void fun(int n) 与int fun(int n,int s)就是名称相同,返回类型不同,参数类型相同个数不同

int fun(int n) 与int fun(int n,int s) 名称相同,返回类型相同,参数类型相同个数不同

所以这些在用C语言编程时都会报错,就是不行

如何用c语言进行文件的批量重命名

这个简易的 按照你的方法改名的程序

在UNIX下测试可用

如果想在windows下用的话 可以用dev c++编译

#include stdio.h

#include unistd.h

#include dirent.h

int main(int argc, char **argv)

{

DIR *dirp;

struct dirent *dirt;

char dir_name[100];

int file_count=1; //file_count为计数.

if (argc != 2){

printf("argument miss\n");

exit(1);

}

if ((dirp = opendir(argv[1])) ==NULL){

printf ("open dir %s failed\n",argv[1]);

exit(1);

}

chdir(argv[1]);

while ( (dirt = readdir(dirp)) != NULL){

if ((strcmp(dirt-d_name,"..") !=0) (strcmp(dirt-d_name,".")!=0)){

memset(dir_name, 0, sizeof(dir_name));

strcpy(dir_name, dirt-d_name);

sprintf(dir_name + strlen(dirt-d_name), "_%d", file_count++);

if (rename(dirt-d_name, dir_name) 0){ //dir_name 为新的命名

printf("rename failed\n");

exit(1);

}

}

}

return 0;

}

原理挺简单 你输入一个文件夹作为参数 然后程序就打开这个文件夹遍历这个文件夹里的文件,把这个文件的名字取出来后面加上 "_计数" 用rename 重新命名就行了.