2015-02-22 3 views
-1

Прежде всего Извините за мой плохой английский. Я не родной английский. Я собираюсь написать программу, в которой перечислены все доступные логические диски. Затем попросите пользователя выбрать диск. затем берет расширение файла и ищет этот тип файла на данном диске (включая каталоги и подкаталоги). Программа должна иметь возможность запускать на окнах 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(); 
} 
+0

Боковое примечание - прошу прощения за ваш английский. У тебя хорошо получается. –

+0

Вы знаете, что C++ 11 - это версия C++, а не C? Итак, это код C++ или C? Или C# ??? – Deduplicator

+0

не имеет значения ни c, ни C++ (но не C#). но он должен работать для моей цели. –

ответ

0

Вы можете использовать Visual Studio для компиляции C и C++ в Windows, и он доступен с собственной IDE. Когда вы устанавливаете визуальную студию, она также будет устанавливать необходимые библиотеки для компиляции программы C/C++. Существуют другие IDE и компиляторы, совместимые с Windows, такие как DevC++, CodeBlocks.