어제 학습한 것을 기반으로 코딩을 하다가 고민에 빠졌다.
형식지정자에서 우선 flag의 유효성을 알아보기 위해 위와 같이 코딩을 했다.
형식지정자에서 width를 처리해줄 때 두가지 경우가 있다.
1. *
로 width를 지정해줄 때
-> va_arg로 ap 리스트를 int만큼 넘겨줌으로써 두번째 인자를 width 변수로 넘긴다.
va_arg로 가변인자를 넘겨줄 때 정수는 int, 실수는 double로 넘겨준다.
gcc를 이용한 컴파일은 가변인자가 int 보다 작으면 int로 (char, short = int)
float는 double로 넘겨준다.
매개변수로는 이중포인터 문자형을 받았다.
숫자가 한자리수라는 보장이 없기 때문에 char을 매개변수로 받지 않고 char **로 하여금 문자열을 받았다.
ft_strdup("")
를 이용하여 빈 문자열을 duplicate한다.ft_strjoin()
을 통해 tmp 변수에 이어 붙여준다.ft_atoi()
를 통해 숫자로 변환생각지도 못했던 것인데 width를 바로 숫자로 받으면 음수를 신경 안써줘도 되지만,
*
를 통해 받게 된다면 인자에 음수값이 들어갈 수도 있다. 그러면-
부호는 flag에서-
옵션처럼 처리하고 width엔 양수로 변환하여 넣어주면 된다.