从stdio.h C ++使用函数remove(..)的问题

时间:2011-06-10 17:23:54

标签: c++ stdio

您好我的问题是为什么以下函数无法删除名称在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]='\0';
    int br=0;

    do
    {   

        while((inpch=fgetc(file1))!=EOF)
        {
            string[br]=char(inpch);
            br++;
            if(br==9)break;
        }


        if(br!=9)
        {
            string[br]='\0';
            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);
}

3 个答案:

答案 0 :(得分:4)

我想在退出do-while循环之前的某个时刻,以下if条件变为true,并且函数在到达函数末尾之前返回,甚至没有调用{{1功能。

remove

您想写 if(br!=9) { string[br]='\0'; fputs(string,file2); return; //<------------ here you're returning! } 还是return?看起来它存在问题所在。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

remove来电替换为:

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

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