ft_itoa - chanhl22/libft GitHub Wiki

 13 #include "libft.h"
 14 
 15 int     length_of_int(int num)
 16 {
 17     int len;
 18 
 19     len = (num <= 0) ? 1 : 0; //num๊ฐ€ ์Œ์ˆ˜์ผ๋•Œ์™€ ์–‘์ˆ˜์ผ๋•Œ -์˜ ๋ฐฐ์—ด์„ ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค. ์Œ์ˆ˜๋ฉด ํ•œ์นธ ๋” ํ•„์š”
 20     while (num != 0) //0์ด ์•„๋‹๋•Œ๊นŒ์ง€, ์Œ์ˆ˜ ์–‘์ˆ˜๋ผ์„œ ๋ถ€๋“ฑํ˜ธ๋Š” ์•ˆ๋Œ
 21     {
 22         num = num / 10;
 23         len++;
 24     }
 25     return (len);
 26 }
 27 
 28 int     ft_abs(int num)   //์Œ์ˆ˜์ผ๋•Œ๋Š” ๋ชจ๋“ˆ๋Ÿฌ ๊ณ„์‚ฐ์ด ์Œ์ˆ˜์ด๋ฏ€๋กœ ์ ˆ๋Œ€๊ฐ’์„ ์”Œ์›Œ์•ผํ•จ
 29 {
 30     return ((num < 0) ? -num : num);
 31 }
 32 
 33 char    *ft_itoa(int n)
 34 {
 35     char    *str;
 36     int     len;
 37     int     sign;
 38 
 39     len = length_of_int(n);
 40     if (!(str = (char*)malloc(sizeof(char) * (len + 1)))) //str์— ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ๊ธธ์ด๋Š” ๋ฐ›๋Š” n์— ๋”ฐ๋ผ์„œ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ๊ตฌํ•ด์•ผํ•จ
 41         return (NULL);
 42     str[len] = '\0';   //๋ฌธ์ž์—ด์ด๋‹ˆ๊นŒ ๋‹น์—ฐํžˆ NULL์ถ”๊ฐ€
 43     len--; //์ถ”๊ฐ€ํ•œ ๋ฌธ์ž์—ด ์•ž์—์„œ ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•œ -1
 44     sign = (n < 0) ? -1 : 1; //๋ถ€ํ˜ธ ์ƒ๊ฐ
 45     while (len >= 0) //len์— ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค˜์•ผํ•จ, 3์ž๋ฆฌ๋ฉด ์–‘์ˆ˜๋ฉด 3์นธ ์Œ์ˆ˜๋ฉด 4์นธ
 46     {
 47         str[len] = ft_abs(n % 10) + '0'; //ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์คŒ (์ ˆ๋Œ€๊ฐ’ ํ•„์š”)
 48         n = ft_abs(n / 10); //n๊ฐ’๋„ ๋ฐ”๊ฟˆ
 49         len--;
 50     }
 51     if (sign == -1)
 52         str[0] = '-'; ////์Œ์ˆ˜๋ผ๋ฉด ๋งˆ์ง€๋ง‰์— 0์นธ์— ๋„ฃ์–ด์ค˜์•ผํ•จ, ์—ญ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ์•˜๊ธฐ ๋•Œ๋ฌธ
 53     return (str);
 54 }