PDA

Visualizza la versione completa : [C/C++] funzione esiste file


frarugi87
05-01-2008, 16:27
Ciao a tutti
volevo sapere se esiste una funzione che permette di sapere se un file esiste o no. chiedo scusa se è già presente sul forum ma non mi funziona la ricerca.
grazie a tutti

EDIT: va anche bene una funzione/API che restituisce l'elenco di tutti i file presenti in una cartella...

j4ck_andros
05-01-2008, 16:58
se ho capito bene,dovrebbe essere cosi:


#include <stdio.h>
int main()
{
FILE *fp;
char percorso[50];
printf("inserisci il percorso del file\n");
fp=fopen(percorso,"r");
if(fp==NULL)
{
printf("file non esiste\n");
return 0;
}
printf("file esiste\n");
fclose(fp);
}

questo programma ricevendo il percorso del file comunica se il file esiste oppure no
ciao :ciauz:

frarugi87
05-01-2008, 17:07
esatto...
però questa funzione può fallire anche se il file non è disponibile (penso quando ad esempio il file è usato da un altro programma). una funzione o un'api che dica se il file esiste? penso che esista implementata nelle API di windows

MacApp
05-01-2008, 17:14
Originariamente inviato da frarugi87
Ciao a tutti
volevo sapere se esiste una funzione che permette di sapere se un file esiste o no. chiedo scusa se è già presente sul forum ma non mi funziona la ricerca.
grazie a tutti

EDIT: va anche bene una funzione/API che restituisce l'elenco di tutti i file presenti in una cartella...

Dai un'occhiata anche alle seguenti:
Sotto Windows FindFirstFile ed affini:
http://msdn2.microsoft.com/en-us/library/aa364418.aspx

Sotto Unix (Linux, Mac OS X ecc..)



$ man 2 stat

http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/stat.2.html

pallinopinco
05-01-2008, 17:27
Puoi svilupparla come consigliato da MacApp oppure nel modo seguente:



#include <windows.h>
#include <iostream>

using namespace std;

bool FileExists(const string Filename)
{
int val = GetFileAttributes(Filename.c_str());
return ((val != -1) && ((FILE_ATTRIBUTE_DIRECTORY & val ) == 0));
}

int main(void){
if (FileExists("test.cpp"))
cout << "test.cpp esiste";
else cout << "test.cpp non esiste";
return 0;
}

Loading