Средства диалога выбора файла - C (СИ)

  1. Есть ли какие-то минимальные средства для реализации диалога выбора файла на С (в консольной программе) другими словами, чтобы не писать стандартное типа C1 2 FILE * f;  f=fopen("dan.txt","r");а чтобы хотя бы например для данной папки получить например внутри программы весь список файлов скажем с расширением *txt или *.dat И дать возмжность выбора пользователю программы?


textual

Код:

#include <stdlib.h>
#include <shlobj.h>
#include <stdio.h>
 
BOOL SelectFile(char * sPath, const char * szTitle)
{
    BOOL bRet = FALSE;
    LPCITEMIDLIST lpItemDList;
    BROWSEINFO bi = {
        NULL, 
        NULL, 
        sPath,
        szTitle,
        BIF_DONTGOBELOWDOMAIN|BIF_BROWSEINCLUDEFILES,
        NULL,
        NULL,
        0
    };
    if((lpItemDList=SHBrowseForFolder(&bi)))
    {
        if((bRet = SHGetPathFromIDList(lpItemDList, sPath)))
            GetShortPathName((LPCTSTR)sPath,sPath,strlen(sPath));
        else
            sPath[0] = '\0';
    }
    return bRet;
}
 
int main()
{
    char sPath[256] = {0};
    if(!SelectFile(sPath, "Âûáåðèòå ГґГ*éë èëè ГЄГ*ГІГ*ëîã"))
        printf("Error open path %s\n",strerror(GetLastError()));
    else
        printf("Selected path %s\n",sPath);
    system("pause");
    return 0;
}


Похожие ответы
  1. Определить тип центрального процессора.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #include     #include     #include     #include                         extern void GET_CPU_MODEL(void);     extern char VENDOR_ID_MSG[12];     extern char CPU_MODEL;     extern long CPU_SIGNATURE;     extern long FEATURES_ECX;     extern long FEATURES_EDX;     extern long FEATURES_EBX;         int main(void)     {               char buf[128];       printf("*CPU Information*, (C) A. Frolov, 1997\n\n");           GET_CPU_MODEL();             printf("CPU model: %d\n", (unsigned)CPU_MODEL);             if(CPU_MODEL >= 5)       {         memcpy(buf, VENDOR_ID_MSG, 12);         buf[12] = 0;         printf("Vendor ID: %s\n\n", buf);               printf("CPU Signature    %08.8X\n", CPU_SIGNATURE);         printf("CPU Feature EDX  %08.8X\n\n", FEATURES_EDX);                 printf("CPU type:     %d\n",           (CPU_SIGNATURE & 0x3000) >> 12);             printf("CPU family:   %d\n",           (CPU_SIGNATURE & 0xF00) >> 8);             printf("CPU model:    %d\n",           (CPU_SIGNATURE & 0xF0) >> 4);             printf("CPU stepping: %d\n\n", CPU_SIGNATURE & 0xF);                 if(FEATURES_EDX & 0x1)           printf("FPU detected\n");             if(FEATURES_EDX & 0x800000)           printf("MMX supported\n");       }           getch();       return 0;  

  1. Помогите написать программу, в которой в виде диалога надо реализовать перевод градусов в радианы. Запрограммировать в си

  1. Помогите, пожалуйста, разобраться с файлами в Си. На Паскале очень удобно работать с файлами своего типа, такими как структура. Например,

  1. В задании необходимо вычислять значение (я) функции y = f(x).при Х изменяющемся от Хнач до Хкон в n точках, т. е. необходимо решить задачу табулирования. помогите, пожалуйста!

  1. Здравствуйте, возникла следующая ошибка: не могу выбрать через стандартный диалог текстовый файл. Вот код:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 int MAX_FILE_PATH=4000; char strFileName[255];   OPENFILENAME ofn; ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.hInstance = NULL; ofn.lpstrFilter = _T("All files0*.*00"); ofn.lpstrCustomFilter = NULL; ofn.nMaxCustFilter = 0; ofn.nFilterIndex = 1; ofn.lpstrFile = "1.txt"; ofn.nMaxFile = MAX_FILE_PATH; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; ofn.lpstrTitle = NULL; ofn.Flags = OFN_OVERWRITEPROMPT | OFN_EXTENSIONDIFFERENT; ofn.nFileOffset = 0; ofn.nFileExtension = 0; ofn.lpstrDefExt = NULL; ofn.lCustData = NULL; ofn.lpfnHook = NULL; ofn.lpTemplateName = NULL;   GetOpenFileName(&ofn);Ошибки: Unhandled exception at 0x7c80a308 in летняя практика самая последняя версия.exe: 0xC0000005: Access violation writing location 0x00417a58. и: No symbols are loaded for any call stack frame. The source code cannot be displayed. Заранее спасибо за помощь