I/T/C2010.05.27 14:40
C에서 콤마가 포함된 회계식 문자열 출력 입니다.
제가 필요해서 찾은 코드(http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=66238720)를 참고하여 음수 표현 부분을 수정하여 작성하였습니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void NumberToMoneyString( char acDest[], int nNumber );

int main(int argc, char *argv[])
{
	char acNumberString[15];
	NumberToMoneyString(acNumberString, 10000);
	printf("%s\n", acNumberString);	// 10,000
	
	NumberToMoneyString(acNumberString, -10000);
	printf("%s\n", acNumberString);	// -10,000
	
	system("PAUSE");	
	return 0;
}

void NumberToMoneyString( char acDest[], int nNumber )
{
	char acNumberString[15];
	char *pReverse;
	char *pMoneyString;
	int nCount, nLength;
	
	sprintf(acNumberString, "%d", ((nNumber < 0) ? -nNumber : nNumber));
	nLength = strlen( acNumberString );
	
	// pReverse를 acNumberString문자열의 마지막 문자에 위치시킵니다. .
	pReverse = acNumberString + (nLength - 1);
	pMoneyString = acDest;	
	
	// 뒤에서 부터 앞으로 포인터를 이동하면서 복사
	nCount = 0;
	while( nCount < nLength )
	{
		if( nCount !=0 && nCount % 3 == 0 ) *pMoneyString++ = ',';
		*pMoneyString++ = *pReverse--;
		nCount++;
	}
	
	// 음수 처리 
	if ( nNumber < 0 ) *pMoneyString++ = '-';
	*pMoneyString = '\0';
		
	// 문자열 뒤집기  
	strrev( acDest );
}

Posted by 황타