티스토리 뷰

반응형

2020.07.30에 열었던 프엪...

이제 거의 다 왔다ㅜㅜ

바로 오랫동안 묵히던 int를 뿌셨기 때문이다ㅜㅜㅜㅜㅜㅜ

이걸 보면 겨우 요만큼? 싶지만 지난번까지 1/514였다...ㅎ
보너스 평가받기 좋은 툴이라는데 저는 못해요 보너스...
이런 툴이 제일 좋다 히히
이렇게 블로그에 나의 인트라 아이디를 알린다...

이제 남은건

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전에는 첫 제출 했으면 좋겠다...

아무튼 고생했다!!!!

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함