구현한 ft_printf에서 %d, %i, %u 출력의 구현부
ssize_t ft_print_d(va_list **a)
{
int vatemp; //가변인자에서 읽어온 데이터를 저장할 변수
char *str; //읽어온 정수를 문자열로 바꿔 저장해줄 저장공간
ssize_t print_size;
print_size = 0;
vatemp = (int)va_arg(**a, int); //int 크기만큼 가변인자에서 가져옴
if (vatemp == 0) //만약 읽어온 값이 0이라면
print_size = write(1, "0", 1); // 0을 출력
else
{
str = ft_itoa(vatemp); //itoa 사용하여 읽어온 값을 문자열로 바꿔줌
print_size = write(1, str, ft_strlen(str));
//문자열을 출력하고 크기를 저장
free(str);
//itoa를 통해 할당되었던 문자열의 저장공간을 해제해줌
}
return (print_size); //출력한 크기를 반환
}
ssize_t ft_print_i(va_list **a)
{
int vatemp; //가변인자에서 읽어온 데이터를 저장할 변수
char *str; //읽어온 정수를 문자열로 바꿔 저장해줄 저장공간
ssize_t print_size;
print_size = 0;
vatemp = (int)va_arg(**a, int); //int 크기만큼 가변인자에서 가져옴
if (vatemp == 0) //만약 읽어온 값이 0이라면
print_size = write(1, "0", 1); // 0을 출력
else
{
str = ft_itoa(vatemp); //itoa 사용하여 읽어온 값을 문자열로 바꿔줌
print_size = write(1, str, ft_strlen(str));
//문자열을 출력하고 크기를 저장
free(str);
//itoa를 통해 할당되었던 문자열의 저장공간을 해제해줌
}
return (print_size); //출력한 크기를 반환
}
ssize_t ft_print_u(va_list **a)
{
unsigned int vatemp;
//부호가 없어야하기에 unsigned int 사용
char *str;
ssize_t print_size;
print_size = 0;
vatemp = (unsigned int)va_arg(**a, unsigned int);
//가변인자에서 unsigned int 크기만큼 읽어옴
if (vatemp == 0) //읽어온 값이 0이라면
print_size = write(1, "0", 1); //0 출력
else
{
str = ft_ltoa(vatemp);
// itoa보다 큰 범위를 바꿔줄 수 있는 ltoa 함수 사용하여 문자열로 변환
print_size = write(1, str, ft_strlen(str));
//문자열을 출력해줌
free(str);
//출력한 문자열의 저장공간을 해제해줌
}
return (print_size); //출력한 크기를 반환
}