Проблема с использованием функции remove (..) из stdio.h C ++ - PullRequest
2 голосов
/ 10 июня 2011

Здравствуйте, мой вопрос, почему следующая функция не может удалить файл, имя которого указано в dir1; Я использую функцию удаления, но кажется, что есть какая-то проблема с ней. Пожалуйста, помогите мне.

#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 ]

4 голосов
/ 10 июня 2011

Полагаю, в какой-то момент перед выходом из цикла do-while следующее условие if становится истинным, и функция возвращается до того, как достигнет конца функции, даже не вызывая функцию remove.

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

Вы хотели написать return или break? Похоже, проблема в этом.

2 голосов
/ 10 июня 2011

Почему бы вам не проверить возвращаемое значение и код ошибки (errno), который точно скажет вам, почему функция не сработала?

0 голосов
/ 10 июня 2011

Замените ваш remove вызов следующим:

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

, и он должен рассказать вам, что произошло.

...