|
MSDN에서 찾은 소스를 약간 변경했습니다.
근데 문제가.. va_list에서 마지막 인수를 읽은 후
더 이상 인수가 없음을 감지하고 정상적으로 종료하게 하는 방법을 모르겠군요.
MSDN에서 제공하는 예제에서는 인수가 -1 이면 종료하게 되어 있었고,
이런 보호 코드가 없으면 인수 조회하다가 메모리 참조 에러를 일으키게 됩니다.
그래서 저도 인수 제일 뒤에 "A"를 종료코드로 붙여 놓았습니다.
참고하세요.
char *showshowshow( char *first, ... );
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
ShowMessage(showshowshow("안녕", "하세요", "만나서", "반가워요", "A"));
}
//---------------------------------------------------------------------------
char *showshowshow( char *first, ... )
{
char szText[256];
char szResult[1024];
va_list marker;
strcpy(szResult, first);
va_start( marker, first ); /* Initialize variable arguments. */
do
{
strcpy(szText, va_arg( marker, char *));
if ( strcmp(szText, "A") != 0 )
{
strcat(szResult, ", ");
strcat(szResult, szText);
}
} while ( strcmp(szText, "A") != 0 );
va_end( marker ); /* Reset variable arguments. */
return szResult;
}
김상윤 님이 쓰신 글 :
: 답변감사합니다.....
:
: 역시 점점점(...) 이 있군요...
:
: 근데...들어온 파라메터값 하나씩 뿌려주고 싶은데...가능할까요??
:
: 가령..처리결과==>>
:
: 1번째 파라메터 : 안녕
: 2번째 파라메터 : 하세요
: 3번째 파라메터 : 만나서
: 4번째 파라메터 : 반가워요
:
: 이렇게 나오는것이 가능한건가요?
:
:
|