- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想搜索一个可能存在于任何驱动器(例如 C:\、D:\等)中的文件。使用 GetLogicalDriveStrings
我可以获得驱动器列表,但是当我添加任何内容时额外的输出,我在输出提示中得到一个 null
。这是我的代码:
#include "StdAfx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
// Buffer length
DWORD mydrives = 100;
// Buffer for drive string storage
char lpBuffer[100];
const char *extFile = "text.ext";
// You may want to try the wmain() version
int main(void)
{
DWORD test;
int i;
test = GetLogicalDriveStrings(mydrives, (LPWSTR)lpBuffer);
if(test != 0)
{
printf("GetLogicalDriveStrings() return value: %d, Error (if any): %d \n", test, GetLastError());
printf("The logical drives of this machine are:\n");
// Check up to 100 drives...
for(i = 0; i<100; i++)
printf("%c%s", lpBuffer[i],extFile);
printf("\n");
}
else
printf("GetLogicalDriveStrings() is failed lor!!! Error code: %d\n", GetLastError());
_getch();
return 0;
}
我希望以上输出为 C:\text.ext D:\text.ext ...
而我只得到 text.ext
。我正在使用 Microsoft Visual C++ 2010 Express
最佳答案
GetLogicalDriveStrings()
返回以 null 终止的字符串的双 null 终止列表。例如,假设您的机器中有驱动器 A、B 和 C。返回的字符串如下所示:
A:\<nul>B:\<nul>C:\<nul><nul>
您可以使用以下代码遍历返回缓冲区中的字符串并依次打印每个字符串:
DWORD dwSize = MAX_PATH;
char szLogicalDrives[MAX_PATH] = {0};
DWORD dwResult = GetLogicalDriveStrings(dwSize,szLogicalDrives);
if (dwResult > 0 && dwResult <= MAX_PATH)
{
char* szSingleDrive = szLogicalDrives;
while(*szSingleDrive)
{
printf("Drive: %s\n", szSingleDrive);
// get the next drive
szSingleDrive += strlen(szSingleDrive) + 1;
}
}
请注意,该功能如何工作的详细信息,包括我无耻地复制和粘贴的示例代码,可以通过reading the docs 找到。 .
关于c++ - GetLogicalDriveStrings() 和 char - 我哪里做错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18572944/
我是否正确理解此函数返回驱动器号?如果是,那么为什么 GetLogicalDriveStrings 给出一系列以 null 结尾的字符串而不是一系列字符? 最佳答案 因为它返回的字符串可用作 GetD
使用下面的代码来获取我的驱动器的名称: const DWORD buffer_length = sizeof(DWORD)*CHAR_BIT; WCHAR buffer[buffer_length]
我想搜索一个可能存在于任何驱动器(例如 C:\、D:\等)中的文件。使用 GetLogicalDriveStrings 我可以获得驱动器列表,但是当我添加任何内容时额外的输出,我在输出提示中得到一个
我是一名优秀的程序员,十分优秀!