From a00248d7ef02db7c6a738802c1e9ad32f7cb16e3 Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Mon, 10 Feb 2020 16:37:01 +0100 Subject: [PATCH] correction length et debut ecriture type --- .ft_printf.c.swn | Bin 28672 -> 28672 bytes ft_next_word.c | 23 +++++++++-------------- ft_printf | Bin 8964 -> 13140 bytes ft_printf.c | 34 ++++++++++++++++++++++++++-------- ft_printf.h | 1 + 5 files changed, 36 insertions(+), 22 deletions(-) diff --git a/.ft_printf.c.swn b/.ft_printf.c.swn index e71ca7f60b4c0b107bb910a79f7b2972f8392edc..90d1c0dfffc77be1c76eb14e42e0df42d83efff8 100644 GIT binary patch delta 893 zcmZwFO=uHA6bJAZ(;Bz7+8zv^bQ+1-O*BpXN_0*Apn(Qzt2WwV5?f6+&DOYv-A$#W zAr-%FqU2r$y$D_;wDejl9)y55(W2CoM++Xbet`eov>{LjelW8;Z|1$XJH2d~Ubfh; z`YuM!u%OpZ80|zo+NsNHnz=U9x zBl-kO@Db)=4qm_vJc8RW0eQ&4IdH+^79m?e* zY3q~)0HxUgtS1e7}t*!2cQC^XDR34-w))JRf zWkpZ(4(8P2ien$sCv%b@62}#R%Sy_ao?#*8Hy&~P#0@zmm?6fx0CJk~oxBl+U0O~` z%4u0r`MsJT2*ec-v|)60v1oWO%KF2@r=uf71Lu3#F}9vZ%&8^JL^MHUjrXlBjGIK( zkXN~Td^Un)RY}jQ3ggrIh^DKle2&+chslCjjO_6s;hPybE3NNHW>ns>$G4w(Tt5GS zgNF_u2?URN%T@2rl3DD=^Bhixd74qO7V{@qD8yV&7s{+(-hZL5&$zI*#g|~6<`yHIWLmHm$eXSTnb~7F1ptpQ}8- MR^3#YRPI~;0Y??e1ONa4 delta 708 zcmZwDUr19?9KiA4b#8hsb0b*z5Z#2v-3XmjB&I}fDTohJBt=W@-g$Ix!;N4_I`F}V zP>9=0h(-8hs1%n9f_#vAC{ThRq9A^OB01lFx7`WcIzKjeM5Gx$tW=APqZLQ- z<*>*TbmKU_9}@Y7CCp$HS72hhN@NS0_=r`!#Y@a#8dI1=9tsz$WK3EJP9ca&?CBz( z@d^)-LN{7)27atpioC-zo?#IScnXCk{HzdpkNfDsS?uuZuTgk{IBef#kv4)_1mVR7 zZ}bDJc!PO7!VDf@0(UWj8@P^ZURNvs;3&?%ZH z&1^1h8Lft$jb+kSpR$!TY=$!7a9DIbVI||)e!7hp$jmz_bvs +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/10 13:58:30 by hulamy #+# #+# */ -/* Updated: 2020/02/10 13:58:34 by hulamy ### ########.fr */ +/* Updated: 2020/02/10 16:36:35 by hulamy ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,12 +24,12 @@ int width_precision(char *s) int i; i = 0; - if (strchr("*", s[i]) != NULL) + if (ft_strchr("*", s[i]) != NULL) i++; - else if (strchr("123456789", s[i]) != NULL) + else if (ft_strchr("123456789", s[i]) != NULL) { i++; - while (strchr("0123456789", s[i]) != NULL) + while (ft_strchr("0123456789", s[i]) != NULL) i++; } return (i); @@ -62,19 +62,17 @@ int word_length(char *s) { while (s[i] != '%' && s[i] != '\0') i++; - printf("%02i.:",i); return (i); } - while (strchr("#0- +'", s[i]) != NULL) + while (ft_strchr("#0- +'", s[i]) != NULL) i++; i += width_precision(s + i); - if (strchr(".", s[i]) != NULL) + if (ft_strchr(".", s[i]) != NULL) i += width_precision(s + i + 1) + 1; - if (strchr("hl", s[i]) != NULL) + while (ft_strchr("hl", s[i]) != NULL) i++; - if (strchr("diuxXcspefgn%", s[i]) != NULL) + if (ft_strchr("diuxXcspefgn%", s[i]) != NULL) i++; - printf("%02i::",i); return (i); } @@ -95,13 +93,10 @@ char *next_word(char **string) if (*s == '\0') return (NULL); if ((i = word_length(s)) < 0) - { - printf("error\n"); return (NULL); - } word = (char *)malloc(sizeof(char) * (i + 1)); word[i] = '\0'; - memmove(word, s, i); + ft_memmove(word, s, i); *string += i; return (word); } diff --git a/ft_printf b/ft_printf index 5dd0f57f6db0056b48efab7d2b7942252144c770..9bbddd422ca006f7082d56fc6570635cd1ab7387 100755 GIT binary patch delta 2629 zcmZuzeN0nV6u+;frIe2ch#7t$wbF_B5kUMv{HU34d0VX6;@H6HI#P-d`3e+eiv+XM z#Ainax&Jt`Y$S{ONakYZvL$L9=qA;;$c#(K!eZyx^1AeoCN2hz+WpRZuLx#0x$oZJ zx#ygF&OPVc`vzXT-87`+IoSN>7(TTzeLzm4p zm>94*HOFX0H}juOYsh-C(}qqh*TK)59K6h2oKjJ!FR((#d==@STX~zgq_A99!BU$6 zQ+thnX?E-fAl){Mn>DijaT~Z7V+14KxV(WYdO9l>Y^&Z{&&&kbKdP3L!4DzA0YN3!{Pur94hGyDf6*}!uS8;AKK&_W^%ZhHc|)dzOW6=^262gGq{T6n|YmVKUS@luryjFZGzL5#r} zCJy9)BP>k^M+HTij!h(!N!pwEWg#Lfx8bbMzg1HLOuByx)f3e+Lmp>nCvX~r659PFnT&mn-NVvF zIh=jN&TG<3t^2ShW}fRzUo8k3{3F|ijGNGdW9v%iZ)XHE_UPzuD~|(RhaFhkXXU;2 z`|{ucRJ<44R2ZbL%UOQ>jGyiut2)41twe@6)$=2>s@fDzw(orW!7(LdYVTvUFn>r@0$6) znFsR@!gCT6FWC@iaiD>>X6@o{ zbckaD^TN_2J?=w1kzHQjtJ&G7sw=RWB2AIl;Jg%lUDGiI9kMSXkNtt1@%4J!)`FsE&w(bj?$a>D69ftEr8Pp@KO?t)y`{ z6t36>Xi8lxDa+=ZKg`rDG;XkQDGs5OdL&z`^N|pJy znM{U|UP`sG;8yDeD@gzi8WJ0qCcv6X^1;O`Ew4l_%XL0|$8nyIBR&asYwltfgvOpuhD(Sgwh(V6;yWg z-iqjGZoK_=?SDgC;5(f~=|*&Ty|btsaYcyeOuhP)4i@QxKzpA?**lvFJmhrp@0^u9 J;VeMp{{t3&5QhK& delta 1931 zcmZuyZ%kWN6u+;1g#yyob_2`!(?V#*##{i<0e8l*mve>i*eKGJ1zD(i)O9Rcg$I6J-5fE zTlebLgoVD%wb&~JjXa~9D+GFtYbp9dH%q#iVFRr*mC{y22@8fDOR_;(=_`gkS!>ov ztTf-~qPGmrYMpP^omqj6y3RxnW-cu^?#L2r^hL)8VlM1v8Z=frTpJ<)W`m~}jILuY zumH@EjgZ;V>LR2A;4I`6qyf``>8T_H$szly2$_d0zeC(D7!3TENy7dFuj zzQ$^_G;R%)H~#T{bNAGxcRxBw!bCNQk`i5(rk~<*jf*7p8BSglFSC@#CJ+9b$*g>n$z&Aq zvZNILXr_CMY6?3+5efw7o8XYy!J=A@%cbXvFXerUR|GCXCVKqQ@jOXGcX*lxy27h# zM|e8osN_s^#^E+_JY8_q*bZSyibYdb#oL3@^b;LCz2~SBo3srVP`sFU9YLlfr9COk zwcXyQh&K^%g+`bHVSIGWfIA73c0?p8;;N*Km=Vbi+Er4QlK>;tOwX2V&-s+81$3#z zojc9cq=Eif(r25*b=fvy&OH8)TbPK_{w+t#qG_D+B`OC`_rOr1=~(oBO#EeqaP<2v z#kps&mimdKzi!z!whyT?is_h`mXx+t$vc`B=63CdgBKa;9d>}4aaT4%Z(Ca8mZb4{ zPKqt2OxO-J>j5{wIy{)+!OlD!SogrbKSfM~tsbUP_v_rdprxD-=OTW1yMaYq=r86) zzfe*U?@QxXT%BJFPC}PUJ!5e-%F$HHh`3^6f`vZKzHvBsRdWzyXi;2)K!I+qbV4d% z;y&IbY2jy-^oP{TDro_4PzEnu5;;yHHHoWyBl0~8jH-Iu6RGXsp{xltcZ!Ynl{w2Y z?!!1K<36H3JJjb<^?8h=w<^kOi?C@W0oVS=n0Ae6%}iTj+J2_ZL3_zP)JbcceK~GV zePCx3J>@JdWNK3r@rAs{<`T@t-d@~0lyZZYF zybO7O2E&0+q?e&aprJ_E>kk8=_sGOVOmfgK`$l};Xv8P`eO*1iFlp+IWOua$y8p$Iu(B&!w}mXSC^peN$TZl53BI`!%ymXwNS%*vwSo~#y_NE&m$T>4h%b6QpW(E58}6g+4<{)GaCr!HsB98 z;7>MS)`VGeN4#pIMjQmOveC-E!iTKWll7(agL;Rc7DQez2EAKfRq(*OLCudhlx3^j S^Ll>|^k}!-9SE_?V*Cdt;L}F{ diff --git a/ft_printf.c b/ft_printf.c index 02112ed..537ebf3 100644 --- a/ft_printf.c +++ b/ft_printf.c @@ -10,7 +10,7 @@ ** | by va_arg ** while s = next_word() | -return the next sequence to be print ** | (either a string, or a conversion) -** type = ft_specifier(&s) | -return the type if it's a conversion, or "%", +** type = specifier(&s) | -return the type if it's a conversion, or "%", ** | or NULL if it's a string. if it's a ** | single '%' it's considered as a string ** | if convers0, rmvs length & specifier from s @@ -24,13 +24,30 @@ ** return (length) | -return the length of what was printed ** ** char *next_word(char *s); -** char *ft_specifier(char **s); +** char *specifier(char **s); ** int ft_put_words(char *s); ** void ft_expand_star(int i, char **s); ** char *ft_convert(va_list ap, char *type); ** char *ft_flag_transform(char *s, char *print); */ +char *specifier(char **string) +{ + char *s; + int i; + + s = *string; + printf("[%s]\n", s); + if (s[0] != '%' || s[1] == '\0') + return (NULL); + if (s[1] == '%') + return (ft_strdup("%")); + i = 1; + while (ft_strchr("#0- +'0123456789.*", s[i]) != NULL) + i++; + return (ft_strdup(s + i)); +} + int ft_printf(char *string, ...) { char *s; @@ -42,12 +59,13 @@ int ft_printf(char *string, ...) length = 0; va_start(ap, string); while ((s = next_word(&string)) != NULL) - { - printf("[%s]\n", s); - (void)print; - (void)type; - length = 1; - // if (!(type = ft_specifier(&s))) + { // TEST NEXT_WORD : printf("[%s]\n", s); (void)print; (void)type; length = 1; + if (!(type = specifier(&s))) + { + (void)print; + length = 1; + } + printf(" %s\n", type); // lentgh += ft_put_word(s); // while (ft_strchr(s, '*')) // ft_expand_star(va_arg(ap, int), &s); diff --git a/ft_printf.h b/ft_printf.h index d9651b3..aa99de9 100644 --- a/ft_printf.h +++ b/ft_printf.h @@ -3,6 +3,7 @@ # include # include # include +# include "libft.c/libft.h" # include