Файл не удаляется с помощью функции remove () в c

Я написал библиотеку C ++ для удаления файла с помощью remove функция в Visual C++ 2005, Но это не удаляет файл. Как я могу решить эту проблему?

Пример кода приведен ниже:

FILE *fp;
char temp[10000];
char *filename;

GetCurrentDirectoryA(10000,temp);
strcat(temp,"\\temp.png");

filename = (char*)malloc(sizeof(char)*strlen(temp));
memset(filename,'\0',strlen(temp));
strcpy(filename,temp);

if(png == NULL)
return LS_ARGUMENT_NULL;

fp = fopen(filename,"wb");
fwrite(png,sizeof(unsigned char),pngLength,fp);
fclose(fp);

result = remove(filename);

2

Решение

Не обращая внимания на другие части, я думаю, вам следует выделить еще одного персонажа:

filename = (char*)malloc(strlen(temp)+1); // I added a +1 for last '\0'
// memset(filename,'\0',strlen(temp));    // You dont need this
strcpy(filename, temp);

Если вам нужно удалить файл из текущей директории, достаточно просто указать имя:

remove("temp.png");

Избавиться от тех GetCurrentDirectoryA и связанные коды.

2

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

1) char * strcat (char * destination, const char * source);
Конкатенация строк
Добавляет копию исходной строки в строку назначения. Завершающий нулевой символ в месте назначения перезаписывается первым символом источника, и нулевой символ включается в конец новой строки, образованной объединением обоих в месте назначения.

Так что вам не нужно добавлять символ NULL \ 0

2) Для удаления, вам нужно иметь разрешение на доступ к файлу. Проверь это.

3) Проверьте ошибки и распечатайте ошибку, используя strerror (errno)

Кроме того, ваш код, кажется, не проверяет, если fopen успешно

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

Нет смысла делать это только окна используя GetCurrentDirectory,

Вот модная кроссплатформенная версия:

#include <iostream>
#include <fstream>

int main()
{
char file[1024];
char buffer[2048];

// Get file name.
std::cout << "Enter name of file to create: ";
std::cin >> file;

// Append .txt to file.
sprintf(file, "%s.txt", file);

// Create it.
std::cout << "* Creating file: " << file << std::endl;
std::ofstream out(file);

// Write in it.
std::cout << "Write in the file: (CTRL+Z to stop)" << std::endl;
while (std::cin >> buffer)
{
out << buffer << std::endl;
}

// Close it.
out.close();

// Delete it.
std::cout << "* Deleting file: " << file << std::endl;
if (remove(file) != 0) std::cerr << "* Couldn't remove the file. Does the program have the required permissions?" << std::endl;
}
0
По вопросам рекламы [email protected]