디렉터리의 모든 폴더와 파일을 파일 크기와 함께 재귀 적으로 나열하는 프로그램을 작성하려고합니다. 프로그램이 하위 폴더의 한 수준 만 깊이 보이기 때문에 저는 첫 번째 부분을 계속 작업하고 있습니다.하위 폴더를 재귀 적으로 방문 할 수 없습니다.
누구든지 여기에서 문제를 파악할 수 있습니까? 나는 붙어있다.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <strings.h>
#include <dirent.h>
#include <unistd.h>
void listdir(const char *name) {
DIR *dir;
struct dirent *entry;
int file_size;
if (!(dir = opendir(name)))
return;
if (!(entry = readdir(dir)))
return;
do {
if (entry->d_type == DT_DIR) {
char path[1024];
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
continue;
printf("./%s\n", entry->d_name);
listdir(entry->d_name);
}
else
printf("./%s\n", entry->d_name);
} while (readdir(dir) != NULL);
closedir(dir);
}
int main(void)
{
listdir(".");
return 0;
}
[GCC] (http://gcc.gnu.org/)를 사용하는 경우 모든 경고 및 디버그 정보 ('gcc -Wall -g')로 컴파일하십시오. ** 디버거 ** ('gdb')를 사용하십시오. fix-my-code 질문은 주제와 관련이 없으며 표준 C는 디렉토리에 대해 알지 못하기 때문에 (* POSIX는 그렇지만) * linux * 또는 * POSIX *와 같은 다른 태그가 없습니다. –
단순히 반환하는 대신 오류를보고하는 것은 좋은 생각 일 수 있습니다 ... – Olaf
'char * path [1024]'는 여러분이 원하는 것이 아닌'char' 포인터의 배열을 할당합니다 ... – bejado