gpt4 book ai didi

c - 在 C Visual Studio 2008 中重命名文件

转载 作者:行者123 更新时间:2023-11-30 18:02:10 27 4
gpt4 key购买 nike

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

//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 );

最佳答案

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

关于c - 在 C Visual Studio 2008 中重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403485/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com