본문내용
1;
list->string[list->size] = GetMemory( NULL, length );
(void)memcpy( list->string[list->size], string, length );
list->size++;
} /* StrListAppend */
◎ 스트링 리스트 끝에 파일의 모든 라인을 위치 시킨다.
void
StrListAppendFile( list, filename )
StrList list;
char *filename;
{
FILE *file;
char buffer[MAX_LINE];
int length;
register int i;
<표준 매개변수 체크>
if ( !list || !filename ) return;
<본문 입력 파일을 열러 에러를 조사한다.>
if ( NULL == (file = fopen(filename,"r")) ) return;
<에러를 조사하고 리스트에 추가시킨다.>
while ( NULL != fgets(buffer,MAX_LINE,file) )
{
if ( (list->size == list->max_size) && !ExpandArray(list) ) return;
i = list->size;
length = strlen( buffer );
list->string[i] = GetMemory( NULL, (unsigned)length );
if ( NULL == list->string[i] ) return;
(void)memcpy( list->string[i], buffer, length );
list->string[i][length-1] = EOS;
list->size++;
}
<본문 입력 파일을 닫는다.>
(void)fclose( file );
} /* StrListAppendFile */
◎ 새로운 스트링 리스트 구조를 할당하고 추가한다.
StrList
StrListCreate()
{
StrList list;
<스트링 리스트 오브젝트에 공간 할당>
if ( !(list = (StrList)GetMemory(NULL,sizeof(StrListStruct))) )
return( NULL );
<구조를 초기화한다.>
list->string = NULL;
list->size = list->max_size = 0;
if ( !ExpandArray(list) )
{ FreeMemory( (char *)list ); return( NULL ); }
<새로운 스트링 리스트를 리턴한다.>
return( list );
} /* StrListCreate */
◎ 스트링 리스트를 위해 사용되는 공간을 제거
void
StrListDestroy( list )
StrList list;
{
register int i;
<표준 매개변수 체크>
if ( !list ) return;
<모든 공간 제거>
for ( i = 0; i < list->size; i++ ) FreeMemory( (char *)(list->string[i]) );
FreeMemory( (char *)list );
} /* StrListDestroy */
◎ 두개의 리스트가 같은 요소를 갖는지 확인한다.
int
StrListEqual( list1, list2 )
StrList list1,list2;
{
register int i;
<매개변수가 나쁘다면 같지 않다.>
if ( !list1 || !list2 ) return( FALSE );
<크기가 다르면 같지 않다.>
if ( list1->size != list2->size ) return( FALSE );
<리스트 요소를 비교한다.>
for ( i = 0; i < list1->size; i++ )
if ( *(list1->string[i]) != *(list2->string[i]) )
return( FALSE );
else if ( 0 != strcmp(list1->string[i],list2->string[i]) )
return( FALSE );
<모든것을 조사하고 동등한지 봐라>
return( TRUE );
} /* StrListEqual */
◎ 리스트에 스트링 색인을 붙인다.
char *
StrListPeek( list, index )
StrList list;
int index;
{
<표준 파라미터 체크>
if ( !list || (index < 0) || (list->size <= index) ) return( NULL );
<요청된 스트링을 리턴한다.>
return( list->string[index] );
} /* StrListPeek */
◎ 리스트 크기를 할당
int
StrListSize( list )
StrList list;
{
if ( !list ) return( 0 ); else return( list->size );
} /* StrListSize */
void
StrListSort( list )
StrList list;
{
<정렬에서 매개변수를 체크한다.>
if ( !list ) return;
QSort( list->string, 0, list->size-1 );
} /* StrListSort */
◎ strcmp를 사용하는 스트링 리스트를 분류하고 동의어를 삭제한다.
void
StrListUnique( list )
StrList list;
{
register i,j;
<파라미터를 체크한다.>
if ( !list ) return;
<리스트를 정렬한다.>
QSort( list->string, 0, list->size-1 );
<스트링 동의어를 제거한다.>
if ( 1 < list->size )
{
for ( j = 0, i = 1; i < list->size; i++ )
{
if ( 0 == strcmp(list->string[i],list->string[j]) )
(void)free( list->string[j] );
else
j++;
if ( j < i ) list->string[j] = list->string[i];
}
list->size = j + 1;
}
} /* StrListUnique */
list->string[list->size] = GetMemory( NULL, length );
(void)memcpy( list->string[list->size], string, length );
list->size++;
} /* StrListAppend */
◎ 스트링 리스트 끝에 파일의 모든 라인을 위치 시킨다.
void
StrListAppendFile( list, filename )
StrList list;
char *filename;
{
FILE *file;
char buffer[MAX_LINE];
int length;
register int i;
<표준 매개변수 체크>
if ( !list || !filename ) return;
<본문 입력 파일을 열러 에러를 조사한다.>
if ( NULL == (file = fopen(filename,"r")) ) return;
<에러를 조사하고 리스트에 추가시킨다.>
while ( NULL != fgets(buffer,MAX_LINE,file) )
{
if ( (list->size == list->max_size) && !ExpandArray(list) ) return;
i = list->size;
length = strlen( buffer );
list->string[i] = GetMemory( NULL, (unsigned)length );
if ( NULL == list->string[i] ) return;
(void)memcpy( list->string[i], buffer, length );
list->string[i][length-1] = EOS;
list->size++;
}
<본문 입력 파일을 닫는다.>
(void)fclose( file );
} /* StrListAppendFile */
◎ 새로운 스트링 리스트 구조를 할당하고 추가한다.
StrList
StrListCreate()
{
StrList list;
<스트링 리스트 오브젝트에 공간 할당>
if ( !(list = (StrList)GetMemory(NULL,sizeof(StrListStruct))) )
return( NULL );
<구조를 초기화한다.>
list->string = NULL;
list->size = list->max_size = 0;
if ( !ExpandArray(list) )
{ FreeMemory( (char *)list ); return( NULL ); }
<새로운 스트링 리스트를 리턴한다.>
return( list );
} /* StrListCreate */
◎ 스트링 리스트를 위해 사용되는 공간을 제거
void
StrListDestroy( list )
StrList list;
{
register int i;
<표준 매개변수 체크>
if ( !list ) return;
<모든 공간 제거>
for ( i = 0; i < list->size; i++ ) FreeMemory( (char *)(list->string[i]) );
FreeMemory( (char *)list );
} /* StrListDestroy */
◎ 두개의 리스트가 같은 요소를 갖는지 확인한다.
int
StrListEqual( list1, list2 )
StrList list1,list2;
{
register int i;
<매개변수가 나쁘다면 같지 않다.>
if ( !list1 || !list2 ) return( FALSE );
<크기가 다르면 같지 않다.>
if ( list1->size != list2->size ) return( FALSE );
<리스트 요소를 비교한다.>
for ( i = 0; i < list1->size; i++ )
if ( *(list1->string[i]) != *(list2->string[i]) )
return( FALSE );
else if ( 0 != strcmp(list1->string[i],list2->string[i]) )
return( FALSE );
<모든것을 조사하고 동등한지 봐라>
return( TRUE );
} /* StrListEqual */
◎ 리스트에 스트링 색인을 붙인다.
char *
StrListPeek( list, index )
StrList list;
int index;
{
<표준 파라미터 체크>
if ( !list || (index < 0) || (list->size <= index) ) return( NULL );
<요청된 스트링을 리턴한다.>
return( list->string[index] );
} /* StrListPeek */
◎ 리스트 크기를 할당
int
StrListSize( list )
StrList list;
{
if ( !list ) return( 0 ); else return( list->size );
} /* StrListSize */
void
StrListSort( list )
StrList list;
{
<정렬에서 매개변수를 체크한다.>
if ( !list ) return;
QSort( list->string, 0, list->size-1 );
} /* StrListSort */
◎ strcmp를 사용하는 스트링 리스트를 분류하고 동의어를 삭제한다.
void
StrListUnique( list )
StrList list;
{
register i,j;
<파라미터를 체크한다.>
if ( !list ) return;
<리스트를 정렬한다.>
QSort( list->string, 0, list->size-1 );
<스트링 동의어를 제거한다.>
if ( 1 < list->size )
{
for ( j = 0, i = 1; i < list->size; i++ )
{
if ( 0 == strcmp(list->string[i],list->string[j]) )
(void)free( list->string[j] );
else
j++;
if ( j < i ) list->string[j] = list->string[i];
}
list->size = j + 1;
}
} /* StrListUnique */
추천자료
[정보통신기술활용교육][ICT]정보통신기술(ICT)활용교육의 개념과 필요성, 정보통신기술(ICT)...
정보통신기술활용교육(ICT) 정의와 목표, 정보통신기술활용교육(ICT) 필요성과 유용성, 정보...
행정정보공동활용(행정정보공동이용)의 개념과 목표, 행정정보공동활용(행정정보공동이용)의 ...
교원정보소양인증제의 개념, 교원정보소양인증제의 목적과 필요성, 교원정보소양인증제의 인...
정보소양의 의미, 정보소양의 선행 연구, 정보소양의 체계, 학생 정보소양의 배경, 학생 정보...
교원정보소양인증제의 정의와 의의, 교원정보소양인증제의 필요성, 교원정보소양인증제의 내...
교원정보소양(교사정보소양) 인증제의 목적, 교원정보소양(교사정보소양) 인증제의 운영 절차...
정보수집과 정보사회, 정보수집과 시장정보, 정보수집과 학생정보, 정보수집과 교육정보, 정...
문헌정보학과의 발전사, 문헌정보학과의 교과과정, 문헌정보학과의 교과종류, 문헌정보학과의...
[전략정보론] 정보시스템 (정보시스템의 종류, 전략정보시스템의 개념과 등장배경, 전략정보...
[정보사회와디지털문화 공통] 개인정보 유출과 관련해 국가와 기업을 포함 그 이용 주체가 누...
[병원정보시스템 (Hospital Information System : HIS) 사례] 병원정보시스템의 종류와 기능 ...
[정보 격차의 심각성과 해소방안] 정보화 사회에서 깊어지는 정보 불평등 - 정보격차(정보 ...
[문헌정보학][문헌정보][책][도서][문헌]문헌정보학의 중요성, 문헌정보학의 역할, 문헌정보...
소개글