티스토리 뷰
반응형
하고 있다 ft_printf..
오늘은 가변인자에 대해 알아보았다.
2. 가변인자
int ft_printf(const char *format, ...)
가변인자를 이용하면 함수에서 매개 변수의 개수가 정해지지 않은 상태로 쓸 수 있다.
설명을 못하는 편이니 내가 알아볼 수 있게만 정리해보겠다.
int ft_conversion(const char *s, int size, va_list ap)
{
if (s[size] == 'c' || s[size] == 's')
ft_putchar(va_arg(ap, int));
else if (s[size] == 'd')
return(ft_putnbr(va_arg(ap, int)));
return (1);
}
int ft_printf(const char *format, ...)
{
va_list ap;
int count;
int i;
int j;
i = 0;
count = 0;
va_start(ap, format);
while (format[i] != '\0')
{
if ((j = is_conversion(&format[i])))
{
if (j == -1)
return (0); //이렇게 해야되나?
count += ft_conversion(&format[i], j, ap);
i = i + j + 1;
}
else
{
ft_putchar(format[i++]);
count++;
}
}
va_end(ap);
return (count);
}
아직 만들고 있는 코드 덩어리...
ft_printf("print: %s%d", "number:", 70);
이런식으로 ft_printf를 사용하게 되는데 여기서
format == "print: %s%d"
format[i]에서 i를 올려가며 읽게 된다.
va_list ap;
va_list : 각 가변인자의 시작 주소를 가리킬 포인터
va_start(ap, format);
va_start : 가변인자 중 첫번째 인자의 주소를 가르쳐 줌
va_arg(ap, int);
va_arg : va_list의 포인터를 다음 가변인자로 이동시켜 줌
* c에서는 char type도 int로 받아야되는게 포인트!
va_end(ap);
va_end : 가변인자 변수를 끝낼 때 사용
쓰다보니 이해해서 설명이 매우 이상하지만 아무튼 가변인자를 이해했다!
그리고 아주 조금이나마 ft_printf를 구현했다!
근데 아직 flag를 하나도 못했다..^^
다른 사람들 코드를 보니 flag를 구조체로 한 번에 정리(?)하고 그다음 출력하는게 나은것 같아서 다음에 다시 처음부터 뚝딱뚝딱 해보려고 한다.
아무튼 저만큼 혼자 출력한 내 자신 너무 대견해...화이팅...
반응형
'코린이의 성장기' 카테고리의 다른 글
2020.08.21 [부스트 코딩 뉴비 챌린지] 일단 강의는 수료했다! (0) | 2020.08.21 |
---|---|
2020.08.13 [ft_printf] 현재 상황 (0) | 2020.08.13 |
2020.08.08 Code Force 풀어보았다! (0) | 2020.08.08 |
2020.08.06 printf 뿌셔뿌셔 (0) | 2020.08.06 |
2020.08.03 [부스트 코딩 뉴비 챌린지] 3주차 끝, 4주차 시작 (0) | 2020.08.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CS50
- 멋쟁이사자처럼9기
- 코린이의 성장일기
- 코드포스
- ES6
- 42서울
- django
- 멋쟁이사자처럼
- C++
- 드림코딩
- 드림코딩by엘리
- 백준
- git
- 알고리즘
- 자바스크립트
- ft_printf
- 부스트코스
- ft_server
- 코린이
- printf
- 42cursus
- Python
- 42seoul
- codeforces
- 컴퓨터과학
- 코딩뉴비챌린지
- github
- 부스트코딩뉴비챌린지
- BOJ
- 네이버커넥트재단
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함