From 3b77e54d40fc10a44ef3fe8d997aeffbeac2d143 Mon Sep 17 00:00:00 2001 From: Adam <adjoly@student.42angouleme.fr> Date: Wed, 22 Nov 2023 14:08:30 +0100 Subject: [PATCH] finished printf --- ft_printf.c | 4 ++-- ft_printf.h | 6 ++++-- ft_printf.o | Bin 0 -> 3624 bytes ft_putchar.o | Bin 0 -> 1264 bytes ft_putnbr.o | Bin 0 -> 1648 bytes ft_putnbrbase.c | 25 +++++++++++++++++++++---- ft_putnbrbase.o | Bin 0 -> 1896 bytes ft_putstr.o | Bin 0 -> 1488 bytes ft_strlen.o | Bin 0 -> 1136 bytes libftprintf.a | Bin 0 -> 11654 bytes 10 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 ft_printf.o create mode 100644 ft_putchar.o create mode 100644 ft_putnbr.o create mode 100644 ft_putnbrbase.o create mode 100644 ft_putstr.o create mode 100644 ft_strlen.o create mode 100644 libftprintf.a diff --git a/ft_printf.c b/ft_printf.c index f03ef69..8425c99 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -6,7 +6,7 @@ /* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/17 16:48:37 by adjoly #+# #+# */ -/* Updated: 2023/11/22 13:01:29 by adjoly ### ########.fr */ +/* Updated: 2023/11/22 14:01:50 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int ft_putaddr(void *ptr) if (ptr == NULL) return (write(1, "(nil)", 5)); write(1, "0x", 2); - r = ft_putnbrbase((long unsigned int)ptr, "0123456789abcdef"); + r = ft_putnbrbase_p((long unsigned int)ptr, "0123456789abcdef"); return (2 + r); } diff --git a/ft_printf.h b/ft_printf.h index f21ff19..fa3cdb7 100644 --- a/ft_printf.h +++ b/ft_printf.h @@ -6,7 +6,7 @@ /* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/17 16:50:36 by adjoly #+# #+# */ -/* Updated: 2023/11/22 11:24:27 by adjoly ### ########.fr */ +/* Updated: 2023/11/22 14:00:38 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,9 @@ int ft_putnbrulong(unsigned int n); int ft_putaddr(void *ptr); int ft_putstr(char *s); -int ft_putnbrbase(unsigned long int n, char *base); + +int ft_putnbrbase_p(unsigned long int n, char *base); +int ft_putnbrbase(unsigned int n, char *base); int ft_putchar(char c); int ft_putnbr(int n); size_t ft_strlen(const char *s); diff --git a/ft_printf.o b/ft_printf.o new file mode 100644 index 0000000000000000000000000000000000000000..f899e542aef64d5c3287864799a6e0c103332e95 GIT binary patch literal 3624 zcmcIn-)mb{96vXiT{qj^TBZmU31Ua%Tuf`7txV0<-R&UVD8ssn)AlC4wXtndl6!5H z1uI!}mk`)XLD<Xw0u^O43c9q#mDP%QQUo9JGDvM66kp0#sNe6o=Om|h$q?zjaL@O9 zKHtyx$2~u8+E29pQyxVjLKN~Esm=sSNNIo74ly%Cnn@EGr1l+}F8ipRD$#VRM69-j zN5D^WI1*~#x{2vZIN9h~@E}&hMYCFo<{n2DwST4d3Jb8ct*o|{&U<bzi#m3yyrOL( zFP$pyn>n1-%ISRYvUZQ=w0jF!YDY<X2@)s;NVG8lRD0>h&ueRIRQ+m+E|z?YB`>d} zK&3Nfdv%A~URwOqYZn%a9;Kk<{fqXhU0}uTLb1CKDh5TRmN%(w6)$U|@wrsF-D<tr z4!w%ET%U)90X%8F1uId^lJw>aGtZ()vjZ&-Wap_;pxMD<wl()gBO3Ppje`y+)JSub zVbn$+EJ9@k*L$7Z5$pUe<jxZHhrE>h4_I<&JZd(;IBLDQD<!1-7oGgp?q`0+$vpiq zmi!j%Ev(0^_1-S52W+RkRJ}CzZ{pN!grUZeb>U&wsGj6c%SCp(zVF!H-lq2TA*SX> zn97ZV>bEn~Oyy=lUCNt2)vwK|{xerp|KK&%|L)hS-^i=}se<aaimE^L*GeV`%tpw& zlIaF3h!t{L3$-&nFr~T704h5Z0=1H%FaiU}{oGoggK3scX#{RZhBc=Y)bGf#cB?nd zJW6c>9AuiC#|Ge&!;hT8YHS>;8?l4;!1R~$Y9<WHvn=K9<&Ic%(ocf3B-q*YV)si& zU+(GE!;w*AOahLd=sT&MBII;m-z&b3lSVkI$9$b#fv!OCNN2a7o45oAaR5<1K1Y<< z7NxCeZ{rm>(N6(}56U<W#}Bl8=ILv0@I-*&_>LhC@+}S(|Cbg21;jyC@oO#o-XA?k zz}y$n38F#0sz0Q#1k7{)fYd$YZ?=7Iueate4k2E`enWQ9n_<=}@!2~9_9Q$lJDASo z={k4-aLgm(*;)YhD#zQfVGy<kpa<ZomH(YOxKRg>*TGYOV?TGiV1Tf-MPtkyo=!w# z=2#%YY|GR~M-yZw5j71C#KMWNo-~H1t8;5I9(%tM8;Qq0G!n^ZJjNN3aXrD!q$w;& zQ%!&gEAeB5v|%qGcqFjJEjZaI9SDN#fd_X>;71Vz5q#7reU7@1f0pBdFLwTIiQfRW z$bVJB<+{rfzE|Qm^8Ix8`MQMfllWI99RKtYbvGqk<`3}~#Qcv+{BI;&?&kpCXXN7} z@=tKwy$+VdZ<6@GxcE<i59Rkd{GYHG2rBp-RO<dC;qrU=fP;el@K<5;5F4wwxJM%{ zT->8M7cR~@2_!$7GW9TMGvVlQVI_=7JzyHMCJBt{rcMIkWRe6Dac2^VPfZyy@WtY$ z5jcHz@JQ0sBNITtFk^gpETK=~HQW{PK^EM4JcF`?_~bcpVELRMlL{5@4=!=2f;dJ8 zZUTrnS9sPimc#73hW<kw=i7=9lMh^V1@5l@JUB4t|Bdg2Sj;J(0hkg||1eG@ao6t! zA7c0mFUvgd-zS4$i+G_=NSI8${vY4}Jdbzxe}l(=Atwb}tiOQIfl+J!eEk2S5l+M@ z#)^3ST|&Y4aMwnBfFGy<{-XHp5O)*(A|CIgd+*SH4L>R%pF65DiggpfV_?*ZpX2@O Jg2=Ty{$Jv9WIF%= literal 0 HcmV?d00001 diff --git a/ft_putchar.o b/ft_putchar.o new file mode 100644 index 0000000000000000000000000000000000000000..bcef31d76bbefcb1afbe7b37332e94fbf5db7ed1 GIT binary patch literal 1264 zcmb_cJ4*vW5T1(?-x9?_QSd5JF^drkv5=D(4I&Cc3afaD7vdvP?pBO87J?W-@aKq) zg&_Jv1Pcr8ECM={+cE2LHsS}f-^{o3xSKpqQ!9%R!vKZ>bI^!b1$fg$t1es62_2A0 zSD({oud(XKMXHv*O4V*DF<pJQBYvUG8}gp+VJVrMHAfem+_qgd6H{VJOvV$_W6GsW zM4wM!oUDUUi5Y{PEv?tsU<h?G!Z;oC-LdmXvMcIf0>!_8W;et8XV`U9$eVU!Vy~vx zXQ4KL77J@qklBMnnJ?O|$U`H5BX?Um0K=-L8JVp1>BCfd1exp`!aFWWI|ss(uFpmG zTxZV~(y2%gTeh@8<U9{Ve!o<5%BYq1r6ZPBGjUJa`CSn8bf=gtxONGj<bPmd8`^0! z(9TjZ?~AV~SH~a*v<FKU(ce^w{Yq~`CW${=)<=}yr1F?{*a>iO{si7r&%f3uu$FpG zqUqrIrY@q-^O<KgO;5el1I_0;me$ZA?Z<Zp<7<^LqnL^J$MG^cVf(MBLA+<$e+wGd zvmQ2^dOy;EsQ3i!$h6~NJ@pOlo=Pk=pMNi;5tQr)c=n)$)zg0jVZ*2IGg$uxH7r{A literal 0 HcmV?d00001 diff --git a/ft_putnbr.o b/ft_putnbr.o new file mode 100644 index 0000000000000000000000000000000000000000..393d1442f1dd68b0975a133822b27934ee52d4ce GIT binary patch literal 1648 zcmbtTL2DC16n>l3)M}$q1PfKzlUQt)q<E+vBpTQ5L5mcM$FhlATG}LKv(i)u9s<%K z6ngM~=uy1bM6g;S<fu0<Vz9Y*X>thE_ck->WLP}tgUP)2z3+Q(X5Qw7`S3wV(?FO8 zci<!vC_o~7;-`E!1yLA>MT`BgDs7#W+xuph5|wfrw&L%oh_!Qy5Q}|$PhpD!R<D{} zt;x)8)ogdZGP8FWK@ayzxi_|Xql(U6V%zLkJ7%X}C0KsAhE!I6`=!xnSm$5Yty)X3 zwZd%QZ=+%TM?H2hlxFqXuP|%YzK67?wl`H{2dwEgJHlp1e`|(k{`?^hFqcl>*00}p zGOKo8PtF)KMk1cPImKPP-X*#tn)ZAFv{Fo)93MTsi<iHG7%j3k{oFkldl^bcBcY$j zARyT2-A3T|aZolKI4OWI_|HBhiDGn7;`?Vn>@u#{5R(VX-qOZ1FQ0LZEDU_ubXPrx z7&@ngaHmhBcicC8Bi}~wmrfz@^*)Su8OC2pIOPQYn}o}CbdFPBS_3nRTRG3pfKl|^ z{=OnS*IBm>&nbCeJheR=j7+fzhFj<d*+MSo<S~~oc#bhQzZfric6JR3By(1lmR&pN z-+9pMKO7ykG}DMuBgJDe7m+5eY?Bz!JEde0{aOAPC61rLowVZ9n&9{~j!S=MKQpa1 z;(QgJMx1K?t3HWZsyQ?}j75JHSNq@M`ULK>8JwugAo@Zt_Ina0Q|ARi1_QWHIHsQS zG1t#3dhz}OUO*>kes6d|F(;ZIX@y?k)JE-%5Nz}QyA+_E#YKHo{TO2E>=1$pUi2yj UlBv&f0dqn6Ph4+HT5?tWA72&S7ytkO literal 0 HcmV?d00001 diff --git a/ft_putnbrbase.c b/ft_putnbrbase.c index 7e3073a..1866219 100644 --- a/ft_putnbrbase.c +++ b/ft_putnbrbase.c @@ -6,16 +6,16 @@ /* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/11/18 10:57:44 by adjoly #+# #+# */ -/* Updated: 2023/11/22 13:21:55 by adjoly ### ########.fr */ +/* Updated: 2023/11/22 14:02:37 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include "ft_printf.h" -int ft_putnbrbase(unsigned long int n, char *base) +int ft_putnbrbase(unsigned int n, char *base) { - unsigned long int base_len; - int len; + unsigned int base_len; + int len; len = 0; base_len = (int)ft_strlen(base); @@ -28,3 +28,20 @@ int ft_putnbrbase(unsigned long int n, char *base) } return (len); } + +int ft_putnbrbase_p(unsigned long int n, char *base) +{ + unsigned long int base_len; + int len; + + len = 0; + base_len = (int)ft_strlen(base); + if (n < base_len) + len += write(1, &base[n % base_len], 1); + else + { + len += ft_putnbrbase_p(n / base_len, base); + len += write(1, &base[n % base_len], 1); + } + return (len); +} diff --git a/ft_putnbrbase.o b/ft_putnbrbase.o new file mode 100644 index 0000000000000000000000000000000000000000..bbd783192df5084cf7b71ee47dc8305e7f08bc7e GIT binary patch literal 1896 zcmbtUO=uHA6n>l5w%RIDJQOOLlUT585{idbG!oYiBK{N#dJ3C#ONvceb~hM>;z1CG zTs(UB;#Cg{MNlfFcq@XKV=h9#9O|h#1nPUUGtFe#Qqd3Iyf@$botJH&S+{S-3<DGl zxC*_SVgZVSJv$@J42;1jEHM6)J#Q!YdYkb|bIa<Ilhv#y<6AAVxz(vz?OChiO{3l* zYPZti+k8_*8QUAwkMa5^(m~2*&FUK4-0J?ir{@G2yv~1!FvIHV-oLAemA`&bQ!~Ea zI$&(}ig9ZPM{KcKYsX8IC5C6a6{4H$kjdx!Gvsr5o%N>gk2t)hm>uS_*_p(J8%}=N zE+<lHGi@fPQqz;tr2QgJ2MUa*^I%lt#>Ck0$V*)C8RSU_@9DUHBK{(lJw6nBixGkE z3h{`KbnN>-2tQF#px<r~e(y#31|q(wlNfkP<Han<okNL76q!7Lzl1#1QTbwK%3tzx zYZbqock{OAn1%j3-8|o2amw)6UG|-RZ*C3XEY(2JXHU}I3vi!E1aU`D6kjD0LHq!U z;$IVq2*-a9Xu<3CM`@9WaQtPBA40#XpVN4Ko&*&^#H5G|9vNvUUhNG`?@7tG^Qe6{ z&_!jr&WdgNPSpo<(e`aH^PUH0VYO6p%E*;heaD=;voPiPcHt42BHStFmR!5!sJ{QJ z6Ig(rN^jSZkr!9)LHR;gm_P^ZG@}Bf9;Y7*@mZVzM^RHQ{wWBIOMM<S@iJVp0Pn($ zq$f;YM4oE?YkmrIsb&&Ihw7iuNwigerDrrw5B;VBbTT6LuH@*u(b16k4|Ec3wLeAQ zLL+Mb4Y?5YF53UFmaq0tZNj~gf}|wh&;@Y}g-WXaDxd0xcaIb_Wd1d}Xb7)`{$EAq PkI<tK4+FJ-hV%abRF608 literal 0 HcmV?d00001 diff --git a/ft_putstr.o b/ft_putstr.o new file mode 100644 index 0000000000000000000000000000000000000000..ecfa1a3b6a87bc6fdfd4271e97de54f72ebfa08f GIT binary patch literal 1488 zcmbtS&ubGw6n>l3)*p?grC^~7iw8-;j!o&I_E1ve+Bt}aLhx8NaZ8K&p}Ui|3Z;h> zArv8hM*o5$1yK;x-ue#+UW9;Nya(!gn>ThctQUPSJKy`>`{uo!H+$ZrhbhMaZ4NBK zxu;oxPU;*NVpxC-j6zAazsuH7SGIS%pS>PMWNWtz&EoMe;Wrmzs{QFbo!TYmEd_oo z9(X-jIh6-qS30N16qROH%j-D<Dc6o*|3mWxxs#8%db3)c23RQ;7v0>0puFkV-Ta)G z6SFh<`Dun!Y=S;$&Z|{$cCyaY=*Yzm7Q2BQEwU~8EMLvOP8Bo5sTY_*M6ywzL-6Y? zDVk2aIe;|8moOm7pf_&h$2}l-9anZBlbv<7_PnVg6^aV{!LS`}s(><XaT<*&jjMOo zx4X;_;Z9v>zVsK~WuDG4Mh+mNmo?>=aaUn~-_R%ws=iRcjso%2S3Zbx6oCjEeW%i> z)q*<4>J1f$mB*!-Ncoj#m_V{%V{JY3Yw<sD>HpeXRMU*;jhR+pN8huKQLbrI=+Ipi zOcL=IPL#}F#+@krR3@3f%{<M(v?J3ouwDNS#^}s{)#p)5XAaB`eO-S9v1xYwdl)2c z)=WbDj(ykSwO;S{F|M(h`qgv{Z09~<z1{ye)+`uWg8Ke7y^0`depx<H&xz(oTCLYS w^<&pY3MRSH4moI7a8Vswe+fBzc1Xb?>u-`{nEn4_7)#RUxGCSz614Td0otC8^Z)<= literal 0 HcmV?d00001 diff --git a/ft_strlen.o b/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..6b9b640e89525589a0bc650171dc610336685007 GIT binary patch literal 1136 zcmbtSJ4*vW5S~jyd_NHsVi7AN=wgC`Sjb5{bBI`of{o}Uo<#Ccax17H7K#wkr1WQ4 zSqm0g=1&L#EBk=XTy`(ZqKyvhJiht9o!#5Ju{PI3h5^zHSb<I@QGiDUG=12FKInyA zyZUZdubZz{i_nkAt<^GWR?E&c?3&fIjmFRu+&!N+347RoflNBR98avd*%PN6Po`Lk z&CewlW<&~O{@wt_)ixLx!$z#XtGkY~ClRMbHcxJKaQHry9*7o@K=m(1$Bw|~*H7*6 z4>uh^;;4fAvq*f*4?JEex@DH@<N$H%p@qcq3v$f6EO94`kyqL=FEj35a9~FccYtL* z4_NNBRC3FRl~1|LGF!WI9(QsDU=_FMFgJg2TyaWnu=RhE7>eneM72#!Q3v-GHE~s& z!h*1{3Sxey)w0y})7YT*`m25xwX~;xPB}l0J=NrV85glBbCp+D3nkaN8$wU-t(w#? zsUYV1ziA;B!DZr7%@l(s1V}o1BdM1-(e&9Qc_W8*=zD-3jP#9ly~G7A2njKNJV4rs Ue*Y1K^|vGDo*?eDWr5fA-_svcE&u=k literal 0 HcmV?d00001 diff --git a/libftprintf.a b/libftprintf.a new file mode 100644 index 0000000000000000000000000000000000000000..9b048940a32c2c8048cc0e1d7586c0aa875bdeff GIT binary patch literal 11654 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 literal 0 HcmV?d00001