精华内容
下载资源
问答
  • C语言 rename

    2018-12-16 10:44:42
    (1)C语言rename()函数:重命名文件或目录 https://blog.csdn.net/cherish_2012/article/details/38347507

    (1)C语言rename()函数:重命名文件或目录
    https://blog.csdn.net/cherish_2012/article/details/38347507

    展开全文
  • C语言rename()函数:重命名文件或目录 头文件: ? 1 #include 函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为   ? ...

    C语言rename()函数:重命名文件或目录
    头文件:

    ?
    1
    #include <stdio.h>

    函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为
      

    ?
    1
    int rename ( char * oldname, char * newname);

    【参数】oldname为旧文件名,newname为新文件名。

    【返回值】修改文件名成功则返回0,否则返回-1。

    重命名文件:

    • 如果newname指定的文件存在,则会被删除。
    • 如果newname与oldname不在一个目录下,则相当于移动文件。

    重命名目录:

    • 如果oldname和oldname都为目录,则重命名目录。
    • 如果newname指定的目录存在且为空目录,则先将newname删除。
    • 对于newname和oldname两个目录,调用进程必须有写权限。
    • 重命名目录时,newname不能包含oldname作为其路径前缀。例如,不能将/usr更名为/usr/foo/testdir,因为老名字( /usr/foo)是新名字的路径前缀,因而不能将其删除。

    【实例】一个简单的修改文件名的程序。

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include<stdio.h>
    #include <fcntl.h>
    int main( void )
    {
       char oldname[100], newname[100];
       /* prompt for file to rename and new name */
       printf ( "请告诉我一个文件的完整路径: " );
       gets (oldname);
       printf ( "您想修改为: " );
       gets (newname);
       /* 更改文件名 */
       if ( rename (oldname, newname) == 0)
         printf ( "已经把文件 %s 修改为 %s.\n" , oldname, newname);
       else
         perror ( "rename" );
       return 0;
    }

    运行结果:

    ?
    1
    2
    3
    请告诉我一个文件的完整路径:test.ncb
    您想修改为:test111.ncb
    已经把文件test. ncb修改为test111. ncb

    例子首先定义两个数组存储用户指定的文件名, 接着使用函数gets()接收用户输入的文件名,再使用函数rename()修改,如果成功则返回值为0,提示修改成功。

    注意:实际开发中尽量避免使用gets()函数,gets()会影响程序的安全性和健壮性,请查看:C语言gets()函数:从流中读取字符串

    又如,设计一个在DOS命令行下修改文件的程序。
    复制纯文本新窗口

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    void main( int argc, char **argv)
    {
       if (argc < 3)
       {
         printf ( "Usage: %s old_name new_name\n" , argv[0]);
         return ;
       }
       printf ( "%s=>%s" , argc[1], argv[2]);
       if ( rename (argv[1], argv[2]) < 0)
       printf ( "error!\n" );
       else
       printf ( "ok!\n" );
    }

    C语言remove()函数:删除文件或目录
    头文件:

    ?
    1
    #include <stdio.h>

    remove()函数用于删除指定的文件,其原型如下:

    ?
    1
    int remove ( char * filename);

    【参数】filename为要删除的文件名,可以为一目录。如果参数filename 为一文件,则调用unlink()处理;若参数filename 为一目录,则调用rmdir()来处理。

    【返回值】成功则返回0,失败则返回-1,错误原因存于errno。

    错误代码:
    EROFS  欲写入的文件为只读文件。
    EFAULT  参数filename 指针超出可存取内存空间。
    ENAMETOOLONG  参数filename 太长。
    ENOMEM  核心内存不足。
    ELOOP  参数filename 有过多符号连接问题。
    EIO I/O  存取错误。

    【实例】下面的程序演示了如何使用remove()函数删除文件。

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdio.h>
    int main(){
       char filename[80];
       printf ( "The file to delete:" );
       gets (filename);
       if ( remove (filename) == 0 )
         printf ( "Removed %s." , filename);
       else
         perror ( "remove" );
    }

    运行上述程序,首先声明用于保存文件名的字符数组变量,从控制台获取文件名,然后删除该文件,并根据删除结果输出相应的提示信息。

    注意:实际开发中尽量避免使用gets()函数,gets()会影响程序的安全性和健壮性

    展开全文
  • 一,C语言rename()函数:重命名、移动文件或目录 头文件 #include &lt;stdio.h&gt; 函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为 1 int rename(char * ...

    一,C语言rename()函数:重命名、移动文件或目录

    头文件    #include <stdio.h>

    函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为

    1

    int rename(char * oldname, char * newname);

    【参数】oldname为旧文件名,newname为新文件名。

    【返回值】修改文件名成功则返回0,否则返回-1。

    重命名文件:

    • 如果newname指定的文件存在,则会被删除。
    • 如果newname与oldname不在一个目录下,则相当于移动文件。

    重命名目录:

    • 如果oldname和oldname都为目录,则重命名目录。
    • 如果newname指定的目录存在且为空目录,则先将newname删除。
    • 对于newname和oldname两个目录,调用进程必须有写权限。
    • 重命名目录时,newname不能包含oldname作为其路径前缀。例如,不能将/usr更名为/usr/foo/testdir,因为老名字( /usr/foo)是新名字的路径前缀,因而不能将其删除。

    【实例】一个简单的修改文件名的程序。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    #include<stdio.h>

    #include <fcntl.h>

    int main(void)

    {

      char oldname[100], newname[100];

      /* prompt for file to rename and new name */

      printf("请告诉我一个文件的完整路径: ");

      gets(oldname);

      printf("您想修改为: ");

      gets(newname);

      /* 更改文件名 */

      if (rename(oldname, newname) == 0)

        printf("已经把文件 %s 修改为 %s.\n", oldname, newname);

      else

        perror("rename");

      return 0;

    }

    运行结果:

    1

    2

    3

    请告诉我一个文件的完整路径:test.ncb

    您想修改为:test111.ncb

    已经把文件test. ncb修改为test111. ncb

    例子首先定义两个数组存储用户指定的文件名, 接着使用函数gets()接收用户输入的文件名,再使用函数rename()修改,如果成功则返回值为0,提示修改成功。

    注意:实际开发中尽量避免使用gets()函数,gets()会影响程序的安全性和健壮性,请查看:C语言gets()函数:从流中读取字符串

    又如,设计一个在DOS命令行下修改文件的程序。
    复制纯文本新窗口

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    #include <stdio.h>

    void main(int argc, char **argv)

    {

      if(argc < 3)

      {

        printf("Usage: %s old_name new_name\n", argv[0]);

        return;

      }

      printf("%s=>%s", argc[1], argv[2]);

      if(rename(argv[1], argv[2]) < 0)

      printf("error!\n");

      else

      printf("ok!\n");

    }


    二,C语言remove()函数:删除文件或目录

    头文件

    #include <stdio.h>

    remove()函数用于删除指定的文件,其原型如下:

    1

    int remove(char * filename);

    【参数】filename为要删除的文件名,可以为一目录。如果参数filename 为一文件,则调用unlink()处理;若参数filename 为一目录,则调用rmdir()来处理。

    【返回值】成功则返回0,失败则返回-1,错误原因存于errno。

    错误代码:
    EROFS  欲写入的文件为只读文件。
    EFAULT  参数filename 指针超出可存取内存空间。
    ENAMETOOLONG  参数filename 太长。
    ENOMEM  核心内存不足。
    ELOOP  参数filename 有过多符号连接问题。
    EIO I/O  存取错误。

    【实例】下面的程序演示了如何使用remove()函数删除文件。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    #include<stdio.h>

    int main(){

      char filename[80];

      printf("The file to delete:");

      gets(filename);

      if( remove(filename) == 0 )

        printf("Removed %s.", filename);

      else

        perror("remove");

    }

    运行上述程序,首先声明用于保存文件名的字符数组变量,从控制台获取文件名,然后删除该文件,并根据删除结果输出相应的提示信息。

    注意:实际开发中尽量避免使用gets()函数,gets()会影响程序的安全性和健壮性。


    以上转自网络,地址丢失,部分增添改删,谢谢原作者。

    展开全文
  • 最近在一个项目上执行文件的搬移功能时发现总是失败,临时录像文件存放于emmc的/tmp/目录下,当录像完成时候则调用rename企图将此文件搬到/mnt/sdcard/mmcblk1p1/(这是外置的sd卡)上面,但是每次执行rename的时候...

    最近在一个项目上执行文件的搬移功能时发现总是失败,临时录像文件存放于emmc的/tmp/目录下,当录像完成时候则调用rename企图将此文件搬到/mnt/sdcard/mmcblk1p1/(这是外置的sd卡)上面,但是每次执行rename的时候都返回失败了。

    man 2  rename解释如下:

     1 RENAME(2)                                                           Linux Programmer's Manual                                                          RENAME(2)
     2 
     3 NAME
     4        rename - change the name or location of a file
     5 
     6 SYNOPSIS
     7        #include <stdio.h>
     8 
     9        int rename(const char *oldpath, const char *newpath);
    10 
    11 DESCRIPTION
    12        rename()  renames  a  file, moving it between directories if required.  Any other hard links to the file (as created using link(2)) are unaffected.  Open
    13        file descriptors for oldpath are also unaffected.
    14 
    15        If newpath already exists it will be atomically replaced (subject to a few conditions; see ERRORS below), so that there is  no  point  at  which  another
    16        process attempting to access newpath will find it missing.
    17 
    18        If oldpath and newpath are existing hard links referring to the same file, then rename() does nothing, and returns a success status.
    19 
    20        If newpath exists but the operation fails for some reason rename() guarantees to leave an instance of newpath in place.
    21 
    22        oldpath can specify a directory.  In this case, newpath must either not exist, or it must specify an empty directory.
    23 
    24        However, when overwriting there will probably be a window in which both oldpath and newpath refer to the file being renamed.
    25 
    26        If oldpath refers to a symbolic link the link is renamed; if newpath refers to a symbolic link the link will be overwritten.
    27 
    28 RETURN VALUE
    29        On success, zero is returned.  On error, -1 is returned, and errno is set appropriately.
    30 
    31 ERRORS
    32        EACCES Write permission is denied for the directory containing oldpath or newpath, or, search permission is denied for one of the directories in the path
    33               prefix of oldpath or newpath, or oldpath is a directory and does not allow write permission (needed to update the ..  entry).  (See also path_res‐
    34               olution(7).)
    35 
    36        EBUSY  The rename fails because oldpath or newpath is a directory that is in use by some process (perhaps as current working directory, or as root direc‐
    37               tory, or because it was open for reading) or is in use by the system (for example as mount point), while  the  system  considers  this  an  error.
    38               (Note  that  there is no requirement to return EBUSY in such cases—there is nothing wrong with doing the rename anyway—but it is allowed to return
    39               EBUSY if the system cannot otherwise handle such situations.)


    EFAULT oldpath or newpath points outside your accessible address space.

    EINVAL The new pathname contained a path prefix of the old, or, more generally, an attempt was made to make a directory a subdirectory of itself.

    EISDIR newpath is an existing directory, but oldpath is not a directory.

    ELOOP Too many symbolic links were encountered in resolving oldpath or newpath.

    EMLINK oldpath already has the maximum number of links to it, or it was a directory and the directory containing newpath has the maximum number of links.

    ENAMETOOLONG
    oldpath or newpath was too long.

    ENOENT The link named by oldpath does not exist; or, a directory component in newpath does not exist; or, oldpath or newpath is an empty string.

    ENOMEM Insufficient kernel memory was available.

    ENOSPC The device containing the file has no room for the new directory entry.

    ENOTDIR
    A component used as a directory in oldpath or newpath is not, in fact, a directory. Or, oldpath is a directory, and newpath exists but is not a
    directory.

    ENOTEMPTY or EEXIST
    newpath is a nonempty directory, that is, contains entries other than "." and "..".

    EPERM or EACCES
    The directory containing oldpath has the sticky bit (S_ISVTX) set and the process's effective user ID is neither the user ID of the file to be
    deleted nor that of the directory containing it, and the process is not privileged (Linux: does not have the CAP_FOWNER capability); or newpath is
    an existing file and the directory containing it has the sticky bit set and the process's effective user ID is neither the user ID of the file to
    be replaced nor that of the directory containing it, and the process is not privileged (Linux: does not have the CAP_FOWNER capability); or the
    file system containing pathname does not support renaming of the type requested.

    EROFS The file is on a read-only file system.

    EXDEV oldpath and newpath are not on the same mounted file system. (Linux permits a file system to be mounted at multiple points, but rename() does not
    work across different mount points, even if the same file system is mounted on both.)


    EXDEV oldpath and newpath are not on the same mounted file system. (Linux permits a file system to be mounted at multiple points, but rename() does not
    work across different mount points, even if the same file system is mounted on both.)

    CONFORMING TO
    4.3BSD, C89, C99, POSIX.1-2001.

    BUGS
    On NFS file systems, you can not assume that if the operation failed the file was not renamed. If the server does the rename operation and then crashes,
    the retransmitted RPC which will be processed when the server is up again causes a failure. The application is expected to deal with this. See link(2)
    for a similar problem.

    SEE ALSO
    mv(1), chmod(2), link(2), renameat(2), symlink(2), unlink(2), path_resolution(7), symlink(7)

    COLOPHON
    This page is part of release 3.35 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at
    http://man7.org/linux/man-pages/.

    Linux 2009-03-30

    注意看最后一个ERRORS类型

    EXDEV oldpath and newpath are not on the same mounted file system. (Linux permits a file system to be mounted at multiple points, but rename() does not
    work across different mount points, even if the same file system is mounted on both.)

    回想以前使用rename的时候没有失败过,因为都是在一个磁盘上操作,现在是在两个磁盘上不同的挂载点。这正是rename失败的原因。

    所以最后之只能放弃这个方法,采用system 的mv或者同时读写两个文件的方法测试后发现没多大差别效率都比较低。

     

    转载于:https://www.cnblogs.com/tid-think/p/6432971.html

    展开全文
  • C语言库函数rename

    2019-09-29 00:47:05
     用 法: int rename(char *oldname, char *newname);  头文件:在Visual C++6.0中用stdio.h或者io.h  说明:用该函数可以实现文件移动功能,把一个文件的完整路径的盘符改一下就实现了这个文件的移动。...
  • C语言rename()函数:重命名文件或目录 头文件: #include 函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为   int rename(char * oldname, char * newname); 【参数】oldname为旧文件名,...
  • C语言rename()函数

    千次阅读 2019-03-03 00:46:18
    int rename(const char *old_filename, const char *new_filename) 【参数】 old_filename:即将被重命名/移动的文件名称。 new_filename:文件的新名称。 【返回值】 成功返回0,错误返回 -1。 【实例】 ...
  • rename命令可以用来修改文件名、重命名文件,批量重命名文件rename是最好的选择,下面学习阿拉小编为大家分享...linux的rename命令有两个版本,一个是c语言版本的,一个是perl语言版本的,判断方法:输入man rename...
  • rename.c C语言

    2013-06-17 23:13:44
    重命名的C语言程序,可以在LINUX下使用,希望能帮上你。
  • C语言中的rename函数

    千次阅读 2008-04-10 10:51:00
    rename函数的原型为:int rename(char *oldfname, char *newfname);它既可以对文件,也可对文件夹重命名。它的原理是对系统中文件和文件夹的结构属性进行修改。
  • C语言rename()函数:重命名文件或目录头文件:#include 函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为int rename(char * oldname, char * newname);【参数】oldname为旧文件名,newname为新...
  • http://www.jb51.net/article/71801.htm2015C语言rename()函数:重命名文件或目录头文件:1#include 函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为1int rename(char * oldname,char * newname)...
  • 2015C语言rename()函数:重命名文件或目录头文件:1#include 函数rename()用于重命名文件、改变文件路径或更改目录名称,其原型为1int rename(char * oldname,char * newname);【参数】oldname为旧文件名,newname为...
  • 我正在用C编程语言练习编程,并正在尝试使用rename()函数.我使用以下代码:#include #include int main(void){if(rename ("data", "database") ){fprintf(stderr, "Can't rename file\n");exit(EXIT_FAILURE);}return...
  • if(rename(buf[i], newname) == 0) { pri("Renamed %s to %s !\n", buf[i], newname); } else perror("rename"); pri(" newname : %s \n", newname); i++; } return 0; } ...
  • C语言实现对文件或目录的重命名:rename()函数 1. 头文件包含 #include <stdio.h> 2. 函数原型 int rename(const char * oldname,const char * newname); 上述函数声明中: 参数oldname表示要修改的文件名;...
  • rename

    2020-12-05 21:07:15
    @rename file name mkdir u touch 1 2 3 4 5 we get 5 files then i wanna 1 2 3 4 5 become 1.jpg 2.jpg… use command rename rename ‘s/$/.jpg/’ * do
  • C语言学习

    2020-03-18 18:32:50
    本内容是个人重温C语言笔记,当然也欢迎大家指出错误,分享知识点,共同进步!
  • C语言system函数使用

    万次阅读 多人点赞 2019-11-08 19:09:18
    RENAME 重命名文件 REPLACE 替换文件 * RMDIR 删除目录 ROBOCOPY 复制文件和目录树的高级实用工具 SET 显示、设置或删除 Windows 环境变量 SETLOCAL 开始本地化批处理文件中的环境更改 SC 显示或配置服务(后台...
  • c语言 函数的参数传递示例 C语言中的rename()函数 (rename() function in C) The rename() function is defined in the <stdio.h> header file. 在<stdio.h>头文件中定义了rename()函数 。 Prototype:...
  • C语言 标准库函数

    千次阅读 2015-11-03 10:51:31
    实际上库函数并不是C语言的一部分,它是由人们根据需要编制并提供用户使用的。每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批...
  • linux rename用法

    2016-10-11 23:06:36
    批量重命名文件rename是最好的选择,Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,判断方法:输入man rename 看到第一行是RENAME(1) Linux Programmer’s Manual RENAME(1)C语言版本...
  • C语言入门

    2018-12-21 09:28:41
    C语言须知和开始 初识C语言 1987年布莱恩柯林汉和丹尼斯里奇合作的C语言程序设计第一版是公认的C标准: 第一个ANSI/ISO C标准 通常叫做C89(因为ANSI与1989年批准该标准)或C90(因为ISO与1990奶奶批准该标准),由于...
  • C语言课程设计

    2021-01-15 13:28:09
    我学习C语言时间也不是很长,可能其中有些错误,请小伙伴们多注意哦。 C语言是学习其他语言的基础,下学期学习C++也会有课程设计,完成之后会发出来给小伙伴们参考一下的。 代码函数我都做了注释,方便理解。
  • c语言文件操作

    2021-01-06 16:22:39
    1.c语言文件操作 ​ c语言操作文件有很多函数,并且每个文件操作函数都需要文件指针FIFE实现 1.fprintf ​ 函数原型 int fprintf(FILE * stream, const char * format, …); ​ fprintf函数和printf函数用法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,844
精华内容 5,137
关键字:

c语言rename

c语言 订阅