《C语言程序开发范例宝典-2015-杨丽》-实例180文件重命名-失败,文件打开状态可以重命名吗?
发表在C语言图书答疑 2017-10-01 《C语言从入门到精通(第3版)》第14章 文件
是否精华
版块置顶:

真是无语,照着书上的例子,越往后越没有几个能运行成功!编译环境:VS2010

这是原来教材上的代码:

//main()

//{

//    FILE *fp; /*定义一个指向FILE类型结构体的指针变量*/

//    char filename1[20], filename2[20]; /*定义数组为字符型*/

//    printf("please input the file name which do you want to change:\n");

//    scanf("%s", filename1); /*输入要重命名的文件所在的路径及名称*/

//    if ((fp = fopen(filename1, "r")) != NULL) /*以只读方式打开指定文件*/

//    {

//        printf("%s open successfully", filename1);

// printf("\nplease input new name!");

// scanf("%s", filename2); /*输入新的文件路径及名称*/

// if (rename(filename1, filename2)!=0){

//  printf("convert error!!");

//        exit(0);

// } /*调用rename函数进行重命名*/

//        fclose(fp); /*关闭文件*/

//    }

//    else

//    {

//        printf("cannot find!!");

//        exit(0);

//    }

尝试了好几次都是失败,

if (rename(filename1, filename2)!=0){

 printf("convert error!!");

      exit(0);

}

这几行是我加上的,调试用的,无论怎么就是转换失败。

然后网上找了这个

http://c.biancheng.net/cpp/html/323.html

才发现,原来是不是你重命名就重名名吧,干嘛上来先打开这个要重命名的文件!我觉得是因为文件打开被占用,所有无论怎样操作,都无法执行成功。

#include<stdio.h>

#include<stdlib.h>

#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;

while(1);

}

ok!!

分享到:
精彩评论 1
大米粥
学分:1330 LV8
TA的每日心情
伤心
2017-05-02 10:51:31
2017-10-06
沙发

是的,文件打开后是无法重命名成功的。

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照