write() 함수로 세자리 숫자 조합해서 출력하기

write()함수는 간단합니다. 첫번째 인자로 0,1,2 중에 하나를 입력합니다. 0 :표준입력, 1:표준출력, 2:표준오류 입니다. 화면 출력을 하려면 1을 지정합니다. 두번째 인자는 데이터 첫 주소값 입니다. 세번째 인자는 사용하려는 바이트의 수입니다.

#include <unistd.h>
         size_t write( int fildes, const void *buf, size_t nbytes );

#include <unistd.h>

void	ft_print_comb(void)
{
	char numArr[3];
	char separator[2];

	numArr[0] = '0';
	separator[0] = ',';
	separator[1] = ' ';
	while (numArr[0] <= '7')
	{
		numArr[1] = numArr[0] + 1;
		while (numArr[1] <= '8')
		{
			numArr[2] = numArr[1] + 1;
			while (numArr[2] <= '9')
			{
				write(1, numArr, 3);
				if (numArr[0] != '7' || numArr[1] != '8' || numArr[2] != '9')
				{
					write(1, separator, 2);
				}
				++numArr[2];
			}
			++numArr[1];
		}
		++numArr[0];
	}
}

int main(void){
ft_print_comb();

  return 0;
}

하나씩 첫번재 배열 값보다 크게 지정하면 숫자가 겹치지 않은 조합수를 만들 수 있어요. 

0 1 2  /  0 1 3 / 0 1 4 ...  6 7 8 / 6 7 9 / 6 8 9 / 7 8 9

복잡하게 보이지만 충분히 이해할 수 있는 수준의 코드입니다.

Posted by 뭔가느낌이
,