2015-10-05 2 views
0

Я делаю программу индексирования файлов. Я нашел источник из Google.Привет. Я пытаюсь получить программу индексации файлов с помощью C

Оригинал один, как это ...

==================

void main() 
{ 
    _finddata_t fd; 
    long handle; 
    int result = 1; 
    handle = _findfirst(".\\*.*", &fd); 

    if (handle == -1) 
    { 
     printf("There were no files.\n"); 
     return; 
    } 

    while (result != -1) 
    { 
     printf("File: %s\n", fd.name); 
     result = _findnext(handle, &fd); 
    } 

    _findclose(handle); 

    return; 
} 

========= ==========

Это работает. Но я хотел получить количество найденных файлов и отобразить их в MessageBox.

Так что я пытался с этим кодом ...

=============

void main() 
{ 
    _finddata_t fd; 
    long handle; 
    int result = 1; 
    handle = _findfirst(".\\*.*", &fd); //현재 폴더 내 모든 파일을 찾는다. 
    int i = 0; 
    LPWSTR str = NULL; 

    if (handle == -1) 
    { 
     printf("There were no files.\n"); 
     return; 
    } 

    while (result != -1) 
    { 
     printf("File: %s\n", fd.name); 
     result = _findnext(handle, &fd); 
     i++; 
    } 

    _findclose(handle); 

    wsprintf(str, L"%d Files were found", i); 
    MessageBox(NULL, str, L"Result", MB_OK); 
    return; 
} 

============

Не работает. Он имеет эту ошибку ...

Exception thrown at 0x76C73566 (user32.dll) in ConsoleApplication1.exe: 0xC0000005: Access violation writing location 0x00000000. 

Как я могу исправить это и сделать свою цель? Пожалуйста, помогите мне.

ответ

0

Вы объявили и запустили str при NULL.

LPWSTR str = NULL; 

Тогда вы не можете сделать wsprintf(str, L"%d Files were found", i);

+0

К сожалению ... Я не знаю, как это сделать. – Venomous

0

LPWSTR str = NULL; и впоследствии wsprintf(str, L"%d Files were found", i);

Что вы ожидаете произойдет? Вам нужно выделить некоторое пространство.

+0

Как выделить место для str? Пожалуйста, помогите мне :( – Venomous

+0

Ну, Microsoft api - это не совсем моя сильная сторона, но вы можете использовать 'TCHAR str [150];' (on stack) или динамически с новым. В любом случае LPWSTR является typedef для TCHAR * –

+0

Oh, Succed с TCHAR str [150] без новых. Большое вам спасибо! ^^ – Venomous

Смежные вопросы