繁体   English   中英

重命名C Visual Studio 2008中的文件

[英]Rename File in C Visual Studio 2008

我有以下代码,由于某种原因, rename(..)函数失败。 我尝试提供完整路径,以及更改工作目录,然后仅提供文件名。 下面是后者,它失败了, errno13 所有文件都在该win32控制台项目的“我的项目”文件夹中。 我不明白为什么无论当前工作目录是什么,仅更改文件名都这么困难。

//fname_string* points to beginning of actual filename
//filename contains entire output file path
//file_ext* points to .csv portion
//fname will get old filename
fname_string = strrchr( filename, '\\' );
if( fname_string == NULL )
{
    fname_string = filename;    //no dir supplied, so set it to filename
}
else
{
    strncpy( fname, filename, fname_string - filename );
    fname[fname_string-filename] = '\0';
    chdir(fname);
    fname_string++; //now points to filename
    read_success = errno; //this succeeds supposedly
}

strcpy( fname, fname_string );  //save old file path
sprintf( file_ext, "_%d.csv", append_esn ); //append_esn = 1234
read_success = rename( fname, fname_string );
read_success = errno;  //giving me 13

编辑:我很笨,我正在关闭“输入”文件,而不是“输出”文件。 因此,仅供参考,文件最好关闭! 我认为它已关闭的原因是因为我刷新了输出文件,有时它没有零尺寸的文件。

因此,重命名可以使用完整路径,也可以仅使用文件名(如果它位于工作目录中)……这会花费两个小时的废话……。因此,上面的方法可以正常工作,或者假设下面提到的指针相同,则可以执行以下操作:

strcpy( fname, filename );  //save old file path
sprintf( file_ext, "_%d.csv", append_esn );
read_success = rename( fname, filename );

我在上面的最后一条评论回答了这个问题/问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM