Как проверить, существует ли файл на диске C: \ с помощью VC ++? - PullRequest
2 голосов
/ 25 мая 2010

Я хочу проверить, присутствует ли файл на диске C или нет ..? кто-нибудь может сказать мне, как?

Обновление:

Я получил ошибки, я использую VC ++ 2008

#include "stdafx.h" 
#include <stdio.h> 
int main(int argc, _TCHAR argv[]) 
{ 
    FILE * f = fopen("C:\\Program Files (x86)\\flower.jpeg"); 
    if (f == NULL) { 
        file_exists = FALSE:
    } else { 
        file_exists = TRUE; 
        fclose(f);
    } 
    return 0;
}

Обновление 2

При попытке вырезать и вставить код из связанного примера ниже:

#include "stdafx.h" 
#include <windows.h> 
#include "Shlwapi.h" 
int tmain(int argc, _TCHAR argv[]) 
{ 
    // Valid file path name (file is there). 
    TCHAR buffer_1[ ] = _T("C:\\TEST\\file.txt"); 
    TCHAR *lpStr1; 
    lpStr1 = buffer_1; 

    // Return value from "PathFileExists". 
    int retval;

    // Search for the presence of a file with a true result.
    retval = PathFileExists(lpStr1); 
    return 0;
} 

Я получаю эту ошибку:

files.obj : error LNK2019: unresolved external symbol __imp__PathFileExistsW@4 referenced in function _wmain 

Ответы [ 4 ]

3 голосов
/ 11 июня 2012

Это не проблема кода, это ошибка ссылки, как было сказано. Вы должны добавить это в свой код, который говорит компоновщику использовать библиотеку "shlwapi.lib".

#pragma comment( lib, "shlwapi.lib")

В моем случае это решит проблему. В окнах нет _stat вещи. Но, к счастью, вам не нужно открывать его, чтобы проверить его действительность, PathFileExists - это именно та функция, которая вам нужна.

2 голосов
/ 25 мая 2010

Если вы упомянули диск C, я предполагаю, что вы можете использовать Windows API, если это так

0 голосов
/ 25 мая 2010

Вам не нужно открывать его - просто получите его статус, используя stat или _stat

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


struct _stat buffer;
int         status;
...
status = _stat("mod1", &buffer);

Есть также функции Windows API, чтобы дать вам больше контроля

0 голосов
/ 25 мая 2010

Конечно - просто попробуйте открыть его и посмотреть, не получится ли:

#include <stdio.h>

int file_exists = 0;
FILE * f = fopen("C:\\foo.dat", "rb");
if (f != NULL)
{
    file_exists = 1;
    fclose(f);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...