+ Responder ao Tópico



  1. #1
    Visitante

    Padrão Como testar se um arquivo existe em C?

    Qual a melhor forma de testar se um arquivo exite em C? Eu pensei em abrir o arquivo com fopen() se der erro é por que o arquivo não existe. Mas isso me parece meio burro, ja que eu não vou utilizar o arquivo pra que abrir então!

    Qual a melhor forma de testar se o arquivo existe, digo "melhor forma" em termos de desempenho.

    fopen() e fstat() me parecem que fazem mais coisas do simple mais enxuta!

    Existe uma função expecifica para testar se um arquivo existe em C? se não qual a melhor forma de testar então?

  2. #2

    Padrão Como testar se um arquivo existe em C?

    fopen e fstat abrem os arquivos, logo, esqueça-os. Você pode utilizar access() ou stat() assim:

    Código :
    #include <sys/stat.h>
     
    int fileExists(char *cpfileName)
    {
        struct stat stStat;
        int errcode = stat (cpfileName, &stStat);
        if (errcode == ENOENT)
            return 0; /* nao existe */
        return 1; /* existe */
    }

    ou...

    Código :
    #include <unistd.h>
     
    int fileExists(char *cpfileName)
    {
        int errcode = access(cpfileName, F_OK);
        if (errcode == ENOENT)
            return 0; /* nao existe */
        return 1; /* existe */
    }

    ps: olhe as manpages das funções, você pode verificar as permissões também. Outra coisa, a variavel errno já é setada por padrão quando ocorrer um erro.

    http://www.fifi.org/cgi-bin/man2html...n2/access.2.gz
    http://www.fifi.org/cgi-bin/man2html...man2/stat.2.gz

    Abraços

  3. #3

    Padrão Como testar se um arquivo existe em C?

    Podis ser assim tbm:

    Código :
    int main(int argc,char *argv[]){
     
    FILE *fp;
    fp=fopen("/caminho/pro/arquivo.ext","r");
    if(fp){
        printf("Aeee...existe\n");
        fclose(fp);
    }else{
        printf("Game Over\nTry again");
    }
    return(0);
    }

  4. #4
    Simples assim...
    Visitante

    Padrão Como testar se um arquivo existe em C?

    man 3 stat

  5. #5

    Padrão Como testar se um arquivo existe em C?

    Citação Postado originalmente por Simples assim...
    man 3 stat
    Citação Postado originalmente por Slackware 10
    [09:04:08@sdm]$ man 3 stat
    Não existe a entrada stat na secção 3
    :cry: soh aki deu isso???

  6. #6
    veiga
    Visitante

    Padrão Como testar se um arquivo existe em C?

    Citação Postado originalmente por SDM
    Citação Postado originalmente por Simples assim...
    man 3 stat
    Citação Postado originalmente por Slackware 10
    [09:04:08@sdm]$ man 3 stat
    Não existe a entrada stat na secção 3
    :cry: soh aki deu isso???
    man 2 stat

  7. #7

    Padrão Como testar se um arquivo existe em C?

    Citação Postado originalmente por veiga
    man 2 stat
    ah soh....valew

  8. #8

    Thumbs up Re: Como testar se um arquivo existe em C?

    @ veiga

    amigo bom dia sou novo aqui e quero fazer o seguinte eu uso o advmenu para jogos estou compilando ele mas queria fazer um codigo para verificar a existencia de um outro executavel dentro da pasta system32 caso esse executavel não exista o advmenu dê uma mensagem de erro e não execute tem como ajudar?


    seria mais ou menos isso aqui

    Código :
    int main(int argc, char *argv[]){
    // nome do arquivo
    CHAR arquivo[] = "c:\\windows\\system32\\arcade.exe";
     
    // vamos testar a existência do arquivo
    if(PathFileExists(arquivo)){
    cout << "ENTRE EM CONTATO COM O FORNECEDOR .\n" << endl;
    }
    else{
    cout << "O arquivo NÃO existe no caminho informado ENTRE EM CONTATO COM O FORNECEDOR : " << 
    GetLastError() << endl; 
    } 
     
    system("PAUSE");
    return EXIT_SUCCESS;
    }

    ja tentei adicionar esse codigo mas da erro tem como ajudar a fazer essa função?