2015-03-04 6 views
0

Я разрабатываю клиент/серверную программу на C, где я хочу видеть содержимое файла в папке. Программа работает, но я хотел бы увидеть только файл .txt, а не все файлы. Как я могу это сделать? Спасибо!Показать только некоторое содержимое папки на клиенте/сервере в C

DIR *dp;   
int rv,rv1,stop_received,nread2;  
struct dirent *ep; 
char buffer[300],appoggio[1000],buffer2[300];  
     dp = opendir ("./"); 
     if (dp != NULL){ 
      while (ep = readdir(dp)){ 
       if ((strcmp(ep->d_name, ".") == 0) 
|| (strcmp(ep->d_name,"..") == 0) 
|| (strcmp(ep->d_name, "SERVERD.c\0") == 0) 
||(strcmp(ep->d_name, "h") == 0) 
|| (strcmp(ep->d_name, "Menù segreteria") == 0) 
||(strcmp(ep->d_name, "Menù docente") == 0)) 
continue; 
      strcpy(buffer,ep->d_name); 
      strcat(buffer,"\n"); 
      send(conn_fd, buffer,strlen(buffer), 0); 

      } 
      (void) closedir(dp); 
     }else 
      perror ("Couldn't open the directory"); 

ответ

0

Просто добавьте еще одно условие, чтобы те, которые называют `продолжают:

|| ((4 <= strlen(ep->d_name)) && (strstr(ep->d_name, ".txt") == (ep->d_name + strlen(ep->d_name) - 4))) 

Примечание: 4 происходит от числа символов в ".txt".

Примечание^2: Способ, которым вышеуказанный тест кодируется, если он не эффективен. Вызов strlen() два раза на одной и той же «строке», например, не очень приятно.

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