문제

나는 코드를 통해 폴더 및 파일을 탐색하고 편집 할 수있는 방법을 알고 싶습니다.나는 도서관 디렌트를 보았다.하지만 어떤 함수가 디렉토리를 통과하는 데 사용되는지 확실하지 않습니다.이 경우에 적합한 라이브러리를 사용하고 있다면 폴더를 이동하고 파일을 변경해야하는 몇 가지 기본 기능에 대한 간단한 설명을 제공 할 수 있습니까?또한 링크 된 목록과 같이 현재 어떤 디렉토리에 있는지 추적하기 위해 어떤 종류의 포인터를 사용해야합니까?포인터가 가리킬 수있는 무언가를 갖기 위해 이진 트리를 만들 필요가 있습니까?

도움이 되었습니까?

해결책

가장 중요한 기능은:

오픈다이어(콘스트차*) -디렉터리를 열고 디렉터리 유형의 개체를 반환합니다.

리디 어(디어*) -디렉토리의 내용을 읽고 유형 디렉토리(구조체)의 객체를 반환합니다.

클로세디르(디르*) -디렉토리 닫기

예를 들어 이 코드를 사용하여 디렉터리의 내용을 나열할 수 있습니다:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>

char *pathcat(const char *str1, char *str2);

int main()
{
    struct dirent *dp;
    char *fullpath;
    const char *path="C:\\test\\"; // Directory target
    DIR *dir = opendir(path); // Open the directory - dir contains a pointer to manage the dir
    while (dp=readdir(dir)) // if dp is null, there's no more content to read
    {
        fullpath = pathcat(path, dp->d_name);
        printf("%s\n", fullpath);
        free(fullpath);
    }
    closedir(dir); // close the handle (pointer)
    return 0;
}

char *pathcat(const char *str1, char *str2)
{
    char *res;
    size_t strlen1 = strlen(str1);
    size_t strlen2 = strlen(str2);
    int i, j;
    res = malloc((strlen1+strlen2+1)*sizeof *res);
    strcpy(res, str1);
    for (i=strlen1, j=0; ((i<(strlen1+strlen2)) && (j<strlen2)); i++, j++)
        res[i] = str2[j];
    res[strlen1+strlen2] = '\0';
    return res;
}

경로 캣 함수는 단순히 2 개의 경로를 연결합니다.

이 코드는 선택한 디렉토리(하위 디렉토리가 아님)만 검색합니다.당신은 수행 할 수있는 자신의 코드를 작성해야합니다 '깊이' 스캔(재귀 함수 등)).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top