for (int i = 0; i < 30; i++) {
printf("%6d%c", dice[i], (i + 1) % 10 != 0 ? ' ' : '\n');
}
실무자를 위한 C언어 100제[2] 중..
%c에 원하는 문자열 삽입이 가능한데 이때 삼항연산자에 따라 다른 문자를 삽입할 수 있다.
printf 함수가 출력되는 과정은 대략 다음과 같이 이루어집니다:
포맷 문자열 분석:
printf는 첫 번째 인자인 포맷 문자열("%6d%c")을 읽습니다. 이 문자열을 통해 출력할 데이터의 형식과 자릿수, 출력을 위한 추가 문자를 결정합니다.
printf는 포맷 문자열에서 %로 시작하는 형식 지정자를 하나씩 찾아 분석합니다. 여기서는 %6d와 %c가 형식 지정자입니다.
형식 지정자에 맞춰 인자 매핑:
printf는 형식 지정자에 맞춰 뒤에 나오는 인자들을 하나씩 매핑합니다.
%6d는 dice[i]에 매핑됩니다. 여기서 %6d는 6자리로 맞춰서 정수 값을 출력하라는 뜻입니다. 값이 6자리에 모자랄 경우에는 앞을 공백으로 채워 출력합니다.
%c는 (i + 1) % 10 != 0 ? ' ' : '\n'의 결과에 매핑됩니다. %c는 단일 문자를 출력하기 위한 형식 지정자입니다.
문자열 구성:
printf는 형식 지정자와 실제 값을 사용하여 최종 출력 문자열을 구성합니다. 예를 들어, dice[i]의 값이 5라면, %6d는 " 5"로, 그리고 %c는 선택된 문자(공백 ' ' 또는 개행 문자 '\n')로 채워집니다.
출력 버퍼에 쓰기:
printf는 이렇게 구성된 문자열을 출력 버퍼에 기록합니다. 출력 버퍼는 일종의 메모리 공간으로, 여기에 출력할 내용을 임시로 저장해 둡니다.
버퍼에서 실제 출력:
출력 버퍼에 있는 내용은 화면에 한꺼번에 출력되거나, 특정 조건이 충족될 때(예: 개행이 포함된 경우) 화면에 출력됩니다. 이를 통해 화면에 문자열이 표시됩니다.
위 과정을 통해 printf는 입력된 포맷 문자열과 인자에 맞춰 형식을 지정하고, 그 결과를 출력하는 것입니다.
그렇다네요. \n이 먼저 줄바꿈으로 인식되지 않고 먼저 삼항연산자를 통해 문자열이 %c에 맵핑이 된 후 출력 버퍼에 쓸때 줄바꿈을 확인함으로 이러한 실행이 가능함.
추가로 srand()는 랜덤의 seed를 받음 time( )함수는 time(null)이나 time(0)을 사용하면 현재 시간 반환. time(&t) 포인터를 저장하면 그 위치에 현재 시간을 저장. 리턴형은 time_t이며 포인터도 time_t형으로 정의되어야 함.
'C' 카테고리의 다른 글
| [C] stdbool.h (1) | 2024.11.07 |
|---|