[42 Seoul] ft_printf(3) type s

yamkim·2020년 11월 1일
1

42Cursus-ft_printf

목록 보기
3/5

ft_printf(3) %s

%s의 format

  • 저는 len과 prec을 먼저 처리하고 그다음 width를 비교하는 순서를 선택했습니다.
  • 가변인자의 길이를 len으로 명명하겠습니다.
  • len과 prec을 처리한 문자열을 disp라고 명명하겠습니다.
  • 사용 가능한 플래그: '-'

case 및 예시

  • 아래 예시들의 s는 [char *s = "42Seoul"]로 초기화했습니다.

  • case1: len > width, no prec: 가변인자 모두 출력합니다.
    (기본적으로 len보다 width가 크다면, width를 무시하고 len 모두 출력)
	printf("case1\n");
	result_f = ft_printf("-->|%3s|<--\n", s);
	result_r =    printf("-->|%3s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);

	//result ======================================================
	case1
	-->|42Seoul|<--
	-->|42Seoul|<--
	result_f = 16
	result_r = 16
  • case2: len < width, no prec: len 출력 후 남는 공간 공백으로 채웁니다.
    ('-'플래그 있으면 왼쪽정렬, 없으면 오른쪽 정렬)
	printf("case2\n");
	result_f = ft_printf("-->|%10s|<--\n", s);
	result_r =    printf("-->|%10s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);
 
	//result ======================================================
	case2
	-->|   42Seoul|<--
	-->|   42Seoul|<--
	result_f = 19
	result_r = 19
  • case3: len > prec, no width: 가변인자의 앞단을 prec만큼 자른 disp를 출력합니다.
	printf("case3\n");
	result_f = ft_printf("-->|%.4s|<--\n", s);
	result_r =    printf("-->|%.4s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);

	//result ======================================================
	case3
	-->|42Se|<--
	-->|42Se|<--
	result_f = 13
	result_r = 13
  • case4: len > prec, width < disp_len: case1과 같이 width가 무시됩니다.
	printf("case4\n");
	result_f = ft_printf("-->|%3.4s|<--\n", s);
	result_r =    printf("-->|%3.4s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);

	//result ======================================================
	case4
	-->|42Se|<--
	-->|42Se|<--
	result_f = 13
	result_r = 13
  • case5: len > prec, width > disp_len: 3과 같이 남는 공간을 공백으로 채웁니다.
	printf("case5\n");
	result_f = ft_printf("-->|%7.4s|<--\n", s);
	result_r =    printf("-->|%7.4s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);

	//result ======================================================
	case5
	-->|   42Se|<--
	-->|   42Se|<--
	result_f = 16
	result_r = 16
  • case6: len < prec, no width: prec이 없는 것처럼 생각합니다.
	printf("case6\n");
	result_f = ft_printf("-->|%.9s|<--\n", s);
	result_r =    printf("-->|%.9s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);

	//result ======================================================
	case6
	-->|42Seoul|<--
	-->|42Seoul|<--
	result_f = 16
	result_r = 16
  • case7: len < prec, width < len : 출력해야할 문자열보다 width가 작으므로, 4처럼 출력합니다.
	printf("case7\n");
	result_f = ft_printf("-->|%7.9s|<--\n", s);
	result_r =    printf("-->|%7.9s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);

	//result ======================================================
	case7
	-->|42Seoul|<--
	-->|42Seoul|<--
	result_f = 16
	result_r = 16
  • case8: len < prec, width > len : 출력해야할 문자열보다 width가 크므로, 5처럼 출력합니다.
	printf("case8\n");
	result_f = ft_printf("-->|%10.9s|<--\n", s);
	result_r =    printf("-->|%10.9s|<--\n", s);
	printf("result_f = %d\nresult_r = %d\n\n", result_f, result_r);

	//result ======================================================
	case8
	-->|   42Seoul|<--
	-->|   42Seoul|<--
	result_f = 19
	result_r = 19

1개의 댓글

comment-user-thumbnail
2022년 4월 1일

잘 읽었습니다 : ) 케이스 별로 꼼꼼하게 정리 잘 해놓으신 것 같아요!!

답글 달기