Ошибка при удалении файла в Stack Overflow

#include <iostream>
#include <string.h>
#include <fstream>
#include <conio.h>int main()
{
int k=0;
char *source = new char[30];
char *destination = new char[30];
while(k==0)
{
cout<<"Enter the source File location: ";
cin>>source;
cout<<endl<<"Enter the destination File location: ";
cin>>destination;
ifstream is(source,ios::in | ios::binary);
ofstream os(destination,ios::out | ios::binary);

if(is==NULL || os==NULL)
{
perror("Either the input or the ouput location is invalid");
cout<<endl<<"Try again with new location.\n";
cout<<endl<<"To exit press 7 and to continue press 0";
cin>>k;

}
else
{

os<<is.rdbuf();
k++;
cout<<endl<<"File moved successfully";
cout<<endl<<"Do you want to delete the original file: [y/n]";
if(getch()=='y')
{
if(remove(source)== -1)
perror("Error in deleting File");
else
cout<<" Source File deleted.";
}

}
}
}

Файл успешно удален, но при удалении он говорит:

«Ошибка при удалении файлов». Отказано в разрешении.

Я использовал оба вида слешей (вперед и назад), когда он запрашивает адрес источника и адресата (например, C: /MIT/adi.txt), и я компилирую его с помощью компилятора mingw … Это ошибка ОС или Есть ли проблемы с моим кодом или компилятором?

1

Решение

Две вещи выскакивают у меня:

  • 30 символов недостаточно для большинства полных путей. Также не стоит использовать new если вы можете избежать этого; Массивы фиксированной длины также могут помещаться в стек; и это работа для std::string если когда-либо был один.

  • Вы не закрыли файл, прежде чем пытаться удалить его. Платформы варьируются в зависимости от этого требования, но я думаю, что Windows не нравится это. Уничтожить или закрыть поток перед вызовом remove,

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector