c++ - 如何从C++中的给定目录中删除所有文本文件

标签 c++ file winapi delete-file

我正在尝试弄清楚如何从给定目录中删除所有文本文件。我正在使用 Visual c++ 2010 express,使用 winapi。如果您知道该文件的确切名称,我知道如何删除该文件,但我想删除该目录中的所有文本文件。这是我最近的尝试:

void deleteFiles( WCHAR file[] )
{
  // WCHAR file[] is actually the directory path. i.e C:\Users\TheUser\Desktop\Folder\

  // Convert from WCHAR to char for future functions
  char filePath[ MAX_PATH ];
  int i;
  for( int i = 0; file[ i ] != '\0'; i++ )
  {
    // Cycle through each character from the array and place it in the new array
    filePath[ i ] = file[ i ];
  }
  // Place the null character at the end
  filePath[ i ] = '\0';

  // Generate WIN32_FIND_DATA struct and FindFirstFile()
  WIN32_FIND_DATA fileData;
  FindFirstFile( file, &fileData );

  // Display the filename
  MessageBox( NULL, fileData.cFileName, L"Check", MB_OK );
}

消息框只显示选中的文件夹,不显示文件名。为什么会这样?

最佳答案

一个微妙的问题是您有两个 具有相同名称和不同范围的变量:一个在循环外定义并且未初始化;另一个在循环内声明。

我指的变量是名为i 的变量。

因为在循环外定义的那个是未初始化的,当你用它作为索引来终止路径时,它的值是不确定的,你有未定义的行为。

关于c++ - 如何从C++中的给定目录中删除所有文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21823274/

相关文章:

c++ - C++ 程序的程序终止是可观察的行为吗?

c++ - 在这种情况下,可以在 cpp 文件中编写模板特化吗?

c++ - GET_X_LPARAM 给出负值

c++ - 在 64 位操作系统上使用 WaitForSingleObject 的问题

c++ - 在 C++ 中在哪里声明/定义类范围常量?

java - 使用java套接字从客户端向服务器发送文本文件

c# - 使用 C# 读取 UNIX 编码的文件

django - 使用 HttpResponse 下载文件对于大文件 (>5MB) 抛出错误 "body size is too long"

winapi - Vista BEX 错误

c++ - 在c++中从文件向数据结构中的变量添加值