Piszę prosty menedżer haseł w C++ i mam problem z usuwaniem pliku "Permission denied". Otwierałem Visual Studio jako Administrator i nie pomogło.
Funkcja która ma usuwać plik:
Tutaj caly kod:
Funkcja która ma usuwać plik:
void UsunHaslo()
{
ifstream plik(nhasla_s.c_str());
plik.close();
if (remove(nhasla_s.c_str()) == 0) {
cout << "Plik " << nhasla_s << " usunięty.\n";
}
else {
perror("Błąd usuwania pliku");
}
}
Tutaj caly kod:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
using namespace std;
string nhasla_s;
void UsunHaslo()
{
ifstream plik(nhasla_s.c_str());
plik.close();
if (remove(nhasla_s.c_str()) == 0) {
cout << "Plik " << nhasla_s << " usunięty.\n";
}
else {
perror("Błąd usuwania pliku");
}
}
struct dane
{
string login;
string haslo;
};
void NoweHaslo()
{
cout << "Nazwa hasla";
char nhasla[15]; //pobranie nazwy hasła
cin.getline(nhasla, 15);
for (int i = 0; i < 15; i++) //zamniana na małe litery
{
if (nhasla[i] > 66 && nhasla[i] < 91)
{
nhasla[i] = nhasla[i] + 32;
}
}
nhasla_s = nhasla;
nhasla_s.append(".txt");
ifstream plik2(nhasla_s.c_str());
if (plik2.good())
{
cout << "haslo o nazwie "<<nhasla<<" już isnieje" << endl << "chcesz je usunac i stworzyc nowe" << endl << "1. Tak" << endl << "2.Nie";
int wybor;
cin >> wybor;
switch (wybor) {
case 1:
UsunHaslo();
break;
case 2:
break;
}
}
else
{
ofstream plik(nhasla_s); //jeśli nie istnieje, zostanie utworzony
{
dane dane;
cout << "login : "; cin >> dane.login;
cout << "haslo : "; cin >> dane.haslo;
fstream plik;
plik.open(nhasla_s, ios::out | ios::app);
if (!plik.is_open())
{
cerr << "Blad podczas otwierania pliku" << endl;
}
plik << dane.login << " " << dane.haslo;
cout << "hasło zapisane";
return;
}
}
}
int main()
{
cout<<"Wybierz funkcje:" << endl << "1.Wyswietl haslo " <<endl<< "2.Nowe haslo" <<endl << "3.Usun haslo" <<endl;
while (true)
{
int wybor;
cin >> wybor;
cin.ignore();
switch (wybor)
{
case 1:
break;
case 2:
system("cls");
NoweHaslo();
break;
case3:
system("cls");
UsunHaslo();
break;
case 4:
exit(0);
break;
}
}
return 0;
}