2014-02-19 3 views
0

Я начинаю с нуля, и я немного смущен о том, как это сделать. Я пытаюсь использовать функции readdir и strcmp, но это вызывает множество ошибок.Как проверить, существует ли файл в папке C

#include <stdio.h> 
#include <sys/types.h> 
#include <string.h> 
#include <dirent.h> 

int main(int argc, char *argv[]) 
{ 
    DIR *dirp; 
    struct dirent *direntp; 

    dirp = opendir(argv[1]); 
    if (dirp == NULL) 
    { 
     printf("File could not be open\n"); 

     return -1; 
    } 

    int i = 0; 
    while((direntp[i]=readdir(dirp)) != NULL) 
    { 
     if(strcmp(direntp[i], argv[2]) == 0) 
     { 
      printf("The file %d is in directory %s my friend!", argv[2], dirp); 
     } 

     i++; 
    } 

    closedir(dirp); 
    return 0; 
} 
+0

сначала вы должны Google свой вопрос и если вы получите какие-либо ошибки, то разместим ваш код и список ошибок в вашем вопросе. http://stackoverflow.com/q/230062/3184380 – Shell

+0

Посмотрите: [Похожие вопросы] (http://stackoverflow.com/questions/230062/whats-the-best-way-to-check-if -a-file-exists-in-c-cross-platform) – HvS

+0

Кроме того, итератор содержимого вашего каталога сосет. В вашем случае вы также должны проверить, является ли 'direntp [i]' фактически файлом - 'if (direntp [i] -> d_type == DT_REG) {}'. Как я предположил некоторое время назад [здесь] (http://stackoverflow.com/a/17683417/1150918). – Kamiccolo

ответ

0

попытка открыть файл в режиме чтения, как это,

FILE *f; 
f=fopen("file.txt","r"); 

if(f is not empty) 
    //file exits 
3
read about access 

if(access("myfile.txt", F_OK)) { 
    // file exists 
} 
+0

'int access (const char * path, int amode)' - Следовательно, первым параметром является весь путь к файлу. – HvS

0
int main(int argc, char *argv[]){ 
    DIR *dirp; 
    struct dirent *direntp; 

    dirp=opendir(argv[1]); 
    if (dirp == NULL){ 
     printf("File could not be open\n"); 
     return -1; 
    } 

    while((direntp=readdir(dirp)) != NULL){ 
     if(strcmp(direntp->d_name,argv[2]) == 0){ 
      printf("The file %s is in directory %s my friend!", argv[2], argv[1]); 
      break; 
     } 
    } 

    closedir(dirp); 
    return 0; 
} 
+0

Он также распознает каталоги. Автор не попросил об этом. – Kamiccolo

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