[완료] 2차원 배열 포인터에 대해서 도움좀 부탁드립니다.
글쓴이: vlzkcbcb / 작성시간: 화, 2009/10/13 - 9:22오전
void gogogo( char *file_name, char (*save_name)[1024], int i ) { char buf[256]=""; FILE *fp; fp = fopen ( file_name, "r" ); /* 회사이름파일을 열어 부서명(THIS_IS_GROUP 으로 마킹되어있음)저장. */ while( fgets( buf, 256, fp ) != NULL ){ if( strstr( buf, "THIS_IS_GROUP" ) ){ strcpy( save_name[i], buf); i++; /* 해당 부서안에 하위부서가있는지 부서파일 인자로하여 재귀함수 호출*/ gogogo(buf, save_name[i], i); } } fclose(fp); } /* 회사내의 모든 부서명을 저장하는 프로그램 */ /* argv[1] 는 회사이름, AAA는 부서명을 저장할 2차원배열 */ int main(int argc, char **argv) { char AAA[256][1024]; // memset( AAA, 0, sizeof(AAA) ); gogogo( argv[1], AAA, 0 ); return 0; }
위같이 회사이름을 인자값으로 프로그램을 실행하면
회사이름파일을 열어 안에있는 부서명을 배열에 저장하는 프로그램을 만들어봤습니다.(출력은 생략했습니다)
존재하는 부서라면 파일이 존재하고.
해당 부서도 하위부서를 같을수 있다고 가정하고 만든건데요.
결과적으로는 AAA 라는 2차원배열에 회사내에 존재하는 모든부서(일반부서가 포함하는 하위부서까지)를 저장하는것인데요.
위같이 2차원배열을 인자로주어 함수호출하는것...
호줄된 함수가 2차원배열을 받을때 선언된 것..
재귀함수호출시 전달하는 인자..
등을 맞게 쓴건지좀 알고싶습니다.
도움 부탁드립니다 ㅠㅠ
Forums:
3개를 저장하고
3개를 저장하고 하위부서가 있어서 재귀함수를 호출했는데,
그게 끝나면 다시 i는 3이되어서, 하위부서 저장한게 지워지겠죠?
i를 call by reference 로 호출하면 될것같습니다.
재귀함수에서 호출하실때 save_name+i 이거 말고는 이상한점은 안보여요
도움이되셨으면 좋겠습니다. 항상 건강하세요~~ : )
흘러가고있는 지금 이 시간에 충실하자.
그렇군요 정말 감사합니다!!
카운트 넘길때도 포인터로 넘겨야겠네요
도움 감사드립니다!
댓글 달기