내 프로그램에서 디렉토리를 가져 와서 해당 디렉토리의 내용을 인쇄하고 각 항목이 디렉토리 또는 아닙니다. 나는 그것을 파일 F1.txt 및 F2.txt 및 폴더 D1, D2 및 D3를 포함하는 디렉토리를 줄 경우, 인쇄해야합니다 :S_ISDIR() 문제가 C (아마도 stat()가 구조체를 제대로 설정하지 않았기 때문일 수도 있습니다)
F1.txt 디렉토리
하지 F2.txt 디렉토리
없는 D1은 디렉토리
D2는 D3 디렉토리
char* curr[100];
DIR* dirp = opendir(name);
struct dirent* x;
struct stat fstat;
//go to each file til readdir gives NULL
while((x = readdir(dirp)) != NULL) {
//store name of file
curr[0] = (x -> d_name);
//ignore files starting with "."
if(*curr[0] == '.')
continue;
//set status
stat(curr[0], &fstat);
//print file name
printf("%s", *curr);
//check if it's a directory and print result
if(S_ISDIR(fstat.st_mode))
printf(" is directory\n");
else
printf(" is not directory\n");
}
이 인쇄 모든 파일이 디렉토리 아니라는 것을 말하는 것입니다 디렉토리
입니다. "."로 시작하는 파일을 무시하는 부분을 제거하면 F1.txt, F2.txt 및 D1은 디렉토리가 아니며., D2, D3 및 ..은 디렉토리입니다 (순서대로). 그게 내 문제는 매크로를 사용하는 것이 아니라 stat 호출과 관련이 있다고 생각하게 만들지 만 여기서는 꽤 혼란 스럽기 때문에 잘 모릅니다.
감사합니다. 그것과 같은 간단한 것이라고 생각했습니다>.> – user2268668
+1 "반환 값 확인을위한 코드 추가". – chux