[英]Rename File in C Visual Studio 2008
我有以下代码,由于某种原因, rename(..)
函数失败。 我尝试提供完整路径,以及更改工作目录,然后仅提供文件名。 下面是后者,它失败了, errno
是13
。 所有文件都在该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.