从stdio.h C++中使用函数remove(.)时出现问题

Problem with using function remove(..) from stdio.h C++

本文关键字:问题 remove 函数 stdio C++      更新时间:2023-10-16

你好,我的问题是为什么下面的函数无法删除dir1中指定名称的文件;我使用了remove函数,但它似乎有某种问题。请帮帮我。

#include <stdio.h>
void test(char* dir1,char* dir2)
{
    FILE * file1,* file2;
    file1=fopen(dir1,"r");
    file2=fopen(dir2,"w");
    if(!file1){ return;}
    int inpch;
    char* string = new char[10];
    string[9]='';
    int br=0;
    do
    {   
        while((inpch=fgetc(file1))!=EOF)
        {
            string[br]=char(inpch);
            br++;
            if(br==9)break;
        }

        if(br!=9)
        {
            string[br]='';
            fputs(string,file2);

            return;
        }
        else
        {   
            fputs(string,file2);
            br=0;
        }

    }while(true);
    fclose(file1);
    remove(dir1);/// I DON"T UNDERSTAND WHY IT DOESN"T DELETE THE FILE.
    fclose(file2);
}

我猜在退出do-while循环之前的某个时刻,以下if条件变为true,函数在到达函数末尾之前返回,甚至不调用remove函数。

    if(br!=9)
    {
        string[br]='';
        fputs(string,file2);
        return; //<------------ here you're returning!
    }

你想写return还是break?看起来问题就在那里。

为什么不检查返回值和错误代码(errno),错误代码告诉您函数没有成功的确切原因?

用以下内容替换remove调用:

if( remove( "myfile.txt" ) != 0 )
    perror( "Error deleting file" );
  else
    puts( "File successfully deleted" );

它应该告诉你发生了什么。