Прежде всего Извините за мой плохой английский. Я не родной английский. Я собираюсь написать программу, в которой перечислены все доступные логические диски. Затем попросите пользователя выбрать диск. затем берет расширение файла и ищет этот тип файла на данном диске (включая каталоги и подкаталоги). Программа должна иметь возможность запускать на окнах xp и далее. Это должно быть одноразовое приложение. Я не эксперт в C. У меня есть некоторые руки на C#. У меня есть следующие вопросы в этом отношении. 1. Есть ли IDE/Tool, в котором я могу написать код на C#, который напрямую компилируется в отдельное автономное приложение для Windows? 2. Можете ли вы порекомендовать некоторые библиотеки, которые я могу использовать для форматирования состояния для этой цели, например, используя C#? (Я видел dirent и изучал его.)File Finder in C
Я скопировал код, который я тестирую как стартап.
#include <windows.h>
#include <direct.h>
#include <stdio.h>
#include <tchar.h>
#include<conio.h>
#include<dirent.h>
//------------------- Get list of all fixed drives in char array. only drive letter is get. not path.
// add ":\" to build path.
char AllDrives[26];
DWORD GetAllDrives()
{
int AvlDrives=0;
DWORD WorkState=-1;
//TCHAR DrivePath[] = _T("A:\\"); //Orignal Type
//start getting for drive a:\ to onward.
char DrivePath[] = {"A:\\"};
//http://www.tenouk.com/cpluscodesnippet/getdrivetype.html
ULONG uDriveMask = _getdrives();
if (uDriveMask == 0)
{
WorkState=GetLastError();
printf("\r\nFailed to Get drives. Error Details : %lu", WorkState);
return WorkState;
}
else
{
WorkState=0xFF;
printf("The following logical drives are being used:\n");
while (uDriveMask) {
if (uDriveMask & 1)
{
UINT drvType=0;
drvType = GetDriveType(DrivePath);
if(drvType==3)
{
AllDrives[AvlDrives]= DrivePath[0];
AvlDrives++;
printf("\r\n%s",DrivePath);
}
}
++DrivePath[0]; //Scan to all scanable number of drives.
uDriveMask >>= 1;
}
}
return WorkState;
}
int main(int argc, char* argv[]) {
char DrivePath[]={"C:\\"};
char CurrentDrive[]={"C:\\"};
DWORD Drives=-1;
int d=0;
for(d=0; d<26; d++)
AllDrives[d]=' ';
Drives=GetAllDrives();
if(Drives >0)
{
int Length= sizeof(AllDrives);
for(int x=0; x<26; x++)
{
if(AllDrives[x]!=' ')
{
printf("\r\nFixed Drive : %c",AllDrives[x]);
}
}
}
getch();
}
Боковое примечание - прошу прощения за ваш английский. У тебя хорошо получается. –
Вы знаете, что C++ 11 - это версия C++, а не C? Итак, это код C++ или C? Или C# ??? – Deduplicator
не имеет значения ни c, ни C++ (но не C#). но он должен работать для моей цели. –