2013-05-11 3 views
3

난 그냥 C 프로그래밍을 시작하고 디렉토리에 파일을 읽고 표시하려고한다. (ls 명령과 같다). 여기 Segfault with readdir()

내가 세그먼트 폴트를 얻을 내 코드의 일부, 그리고 왜 단서가 없다 : 몇 가지 테스트 후에는 프로그램 세그먼트 폴트가 도달 할 때 나타납니다

void display_dir(char *dir) 
{ 
    DIR *strm; 
    struct dirent *direct; 

    if((strm = opendir(dir) == NULL)) 
    { 
     printf("ERROR: Couldn't open directory.\n"); 
     exit(1); 
    } 
while ((direct = readdir(strm)) != NULL) 
    display_elems(direct); 
    closedir(strm); 
} 

:

while ((direct = readdir(strm)) != NULL) 

몇 가지 조사를 해봤지만 나에게 도움이 될만한 것을 찾지 못했습니다.

답변

9
if((strm = opendir(dir) == NULL)) 

괄호가 중첩되어 있습니다. 다음과 같아야합니다.

if((strm = opendir(dir)) == NULL) 
+0

감사합니다. – ChypRiotE