courses:programming:extra_tasks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
courses:programming:extra_tasks [2017/04/07 09:47]
pro100kot
courses:programming:extra_tasks [2017/05/04 08:18]
pro100kot
Line 120: Line 120:
 } }
 </​code>​ </​code>​
 +
 +** Пример на обзор txt файлов во вложенных папках:​**
 +<code c dir-list.c>​
 +#include <​stdio.h>​
 +#include <​string.h>​
 +
 +#include <​sys/​types.h>​
 +#include <​dirent.h>​
 +
 +void printFile(const char *path, const int lvl);
 +
 +void dirTraveler(const char *startDir, const int lvl);
 +
 +int main()
 +{
 + dirTraveler("​.",​0);​
 + return 0;
 +}
 +
 +void dirTraveler(const char *startDir, const int lvl)
 +{
 +    char path[1000];
 +    strcpy(path,​ startDir);
 +
 +    DIR *dir=opendir(path);​
 +    if(dir)
 +    {
 + struct dirent *de = readdir(dir);​
 +        while(de)
 +        {
 + if(de->​d_type == DT_REG && strstr(de->​d_name,"​.txt"​))
 + {
 + int path_len = strlen(path);​
 +                strcat(path,​ "/"​);​
 +                strcat(path,​ de->​d_name);​
 + printFile(path,​ lvl);
 +                path[path_len] = '​\0';​
 + }
 +            if(de->​d_type == DT_DIR && 0!=strcmp("​.",​ de->​d_name) && 0!=strcmp("​..",​ de->​d_name))
 +            {
 +                int path_len = strlen(path);​
 +                strcat(path,​ "/"​);​
 +                strcat(path,​ de->​d_name);​
 +                dirTraveler(path,​ lvl+1);
 +                path[path_len] = '​\0';​
 +            }
 +           de = readdir(dir);​
 +        }
 +    }
 +    closedir(dir);​
 +}
 +
 +void printFile(const char *path, const int lvl)
 +{
 + int i;
 + char s[100];
 + for(i=0;​i<​lvl;​i++)
 + printf("​\t"​);​
 + printf("​%s[\n",​ path);
 +
 + FILE *f = fopen(path, "​r"​);​
 + if(f)
 + {
 + while(fgets(s,​sizeof(s)/​sizeof(char),​f))
 + {
 + for(i=0;​i<​lvl+1;​i++)
 + printf("​\t"​);​
 + printf("​%s",​s);​
 + }
 + fclose(f);​
 + }
 +
 + for(i=0;​i<​lvl;​i++)
 + printf("​\t"​);​
 + printf("​]\n"​);​
 +}
 +</​code>​
 +
  
courses/programming/extra_tasks.txt · Last modified: 2022/12/10 09:08 (external edit)