1편에서는 ft_printf와 관련된 함수들의 사용법에 대해서 간단하게 살펴봤다.

va_list ap; 는 가변변수를 가리킬 ap 포인터를 선언하는 것이었고,

va_start(ap, str); 은 ap가 str 개수 만큼 무언가를 가리킬 것을 의미했다.

something = va_args(ap, sizeof(something));

은 ap가 가리키는 곳부터 something의 사이즈만큼 메모리를 담는 것이었다.

 

이번 파트에서 알아볼 것은 Printf를 본격적으로 구현하기 전에

알아야 할 또 하나의 필수적인 파트다.

그것은 영어로 format specifier라고 불리는 서식 지정자이다.

 

printf("%u\n", 10);      //  10: 부호 없는 10진 정수
printf("%d\n", -20);     // -20: 부호 있는 10진 정수
printf("%i\n", -20);     // -20: 부호 있는 10진 정수
printf("%o\n", 071);     //  71: 부호 없는 8진 정수
printf("%x\n", 0xF1);    //  f1: 부호 없는 16진 정수(소문자)
printf("%X\n", 0xF1);    //  F1: 부호 없는 16진 정수(대문자)
printf("%c\n", 'a');    // a: 문자
printf("%s\n", "Hello, world!");    // Hello, world!: 문자열

// 포인터
int num1;
void *ptr = &num1;
printf("%p\n", ptr);    // 008BFB6C: 포인터의 메모리 주소
                        // 0x8bfb6c: 리눅스, OS X에서는 앞에 0x가 붙고, A~F는 소문자로 출력
                        // 높은 자릿수의 0은 생략
// % 기호
printf("%%\n");    // %: % 기호 출력
(위 예제는 c언어 코딩 도장 85.2를 참고했다.https://dojang.io/mod/page/view.php?id=736)

'%[flags][width][.precision]서식지정자'

형식을 가짐을 이해하자.

더 자세한 설명은 위 주석에 링크된 블로그에 나와 있다.

 

본격적으로 ft_printf 코딩을 시작해보자.

프로토 타입은 다음과 같다.

 

int	ft_printf(char const *str, ...)

// ...은 가변변수

 

3편에서 계속

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom