티스토리 뷰
2020.07.30에 열었던 프엪...
이제 거의 다 왔다ㅜㅜ
바로 오랫동안 묵히던 int를 뿌셨기 때문이다ㅜㅜㅜㅜㅜㅜ
이제 남은건
puxX
4개 뿐 ㅜㅜㅜㅜㅜㅜ
int(%d, %i)를 뿌실 때 꼭 참고 해야되었던 것들을 정리해보려고 한다...
int n을 출력할 때
1. precision == 0 && n == 0 의 경우
0 없이 빈칸으로 width만 채운다.
2. 음수
- '-'가 들어가서 width에 영향을 준다.
- zero flag와 precision이 <-000(숫자)>식으로 출력된다.
3. minus flag의 우선 순위가 가장 세다.
* 여기서 parsing 부분을 고쳤다.
- precision부분을 제외하고 앞에 '-'가 나오면 minus flag가 적용된다.
- minus와 zero flag는 공존할 수 없다.
- 따라서 parsing 최종 부분에서 (flag.minus == 1 && flag.zero == 1)이면 flag.zero = 0으로 처리해줬다.
4. 숫자의 길이(strlen), precision, width의 관계
* 혼자서 해보면서 결론을 지었다.
1) 각각 2/3/5의 길이를 가질 때 (숫자는 42)
_ _ 042
2) 2/1/5
_ _ _42
=> 빈칸의 길이 = width - max(strlen, precision)
3) 2/5/1
00042
<'-'플래그 있을 때>
1) 2/3/5
042_ _
2) 2/1/5
42_ _ _
=> 빈칸의 길이 = width - max(strlen, precision)
3) 2/5/1
00042
<음수> (숫자는 -42, strlen은 '-'부호 제외한 숫자의 길이)
1) 2/3/5
_ -042
2) 2/1/5
_ _-42
=> 빈칸의 길이 = width - max(strlen, precision) - 1
(-1이 바보같아보이지만 precision 적용을 위해서 strlen을 숫자만 적용하는 것이 나은 것 같다. 음수인 경우만 -1 해주는게 편했음)
3) 2/5/1
-00042
<음수에 '-' 플래그>
1) 2/3/5
-042_
2) 2/1/5
-42_ _
=> 빈칸의 길이 = width - max(strlen, precision) - 1
3) 2/5/1
-00042
쓰다보니 더 효율적인 나누기 방법이 있을 것 같은데 나는 이정도로 적으면서 이해했었다!
결론은
- precision < len : precision 무시됨
- precision > width : width 무시됨
- 빈칸의 길이: width - max(strlen, precision) (음수의 경우 -1 해주기)
이 정도 하면서 뚱땅거리니 완성했다ㅠㅠ
음수 처리가 정말 정말 정말 힘들었다..
00-42가 아니라 -00042니까...됴르륵...
그래도 완성하니 뿌듯하다!
그리고 점점 함수들이 쪼개지고 많아진다...!
오늘 생긴 함수
- ft_itoa (libft에서 가져옴)
- ft_putnstr (str에서 지정한 글자 개수 만큼 write하기)
- 온갖 ft_handle_int에 필요한 함수....
이렇게 함수 많이 써본거 처음인데 아직 안끝난게 코미디...
그래도 이제 반 넘었고 사실 X랑 x는 같은거니..!!
8/30전에는 첫 제출 했으면 좋겠다...
아무튼 고생했다!!!!
'코린이의 성장기' 카테고리의 다른 글
2020.09.02 [ft_server] 처참히 뿌셔지는 중ㅠ (0) | 2020.09.03 |
---|---|
2020.08.25 [ft_printf] 프린트 에프 끄으으읕 (0) | 2020.08.25 |
2020.08.21 [부스트 코딩 뉴비 챌린지] 일단 강의는 수료했다! (0) | 2020.08.21 |
2020.08.13 [ft_printf] 현재 상황 (0) | 2020.08.13 |
2020.08.08 [ft_printf] 가변인자 뿌셔뿌셔 (0) | 2020.08.08 |
- Total
- Today
- Yesterday
- CS50
- 네이버커넥트재단
- 알고리즘
- github
- printf
- 멋쟁이사자처럼
- git
- 42서울
- 멋쟁이사자처럼9기
- ft_printf
- BOJ
- codeforces
- 자바스크립트
- 백준
- 코드포스
- 코린이의 성장일기
- 부스트코스
- 코딩뉴비챌린지
- 드림코딩
- Python
- 42cursus
- C++
- 부스트코딩뉴비챌린지
- 컴퓨터과학
- 드림코딩by엘리
- 42seoul
- ft_server
- 코린이
- ES6
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |