真是无语,照着书上的例子,越往后越没有几个能运行成功!编译环境: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!!