From b9c6d1751eb224a65e824d58fc4c018d77796686 Mon Sep 17 00:00:00 2001 From: SoheeKim Date: Wed, 5 Apr 2017 00:44:26 +0900 Subject: [PATCH 1/5] fix bugs --- calc.c | 16 +++++++++------- operators.c | 5 +++-- operators.h | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/calc.c b/calc.c index 85f1466..f4403a0 100644 --- a/calc.c +++ b/calc.c @@ -5,28 +5,30 @@ int main(){ FILE *fp = NULL; int operand1, operand2; char operator = ' '; - int result, line = 0; + int line = 0; + double result =0; fp = fopen("read.txt","r"); if(fp!=NULL){ fscanf(fp, "%d", &line); - for(int i=0; i Date: Wed, 5 Apr 2017 00:44:26 +0900 Subject: [PATCH 2/5] fix bugs --- calc | Bin 11920 -> 0 bytes calc.c | 16 +++++++++------- calc.o | Bin 6608 -> 0 bytes operators.c | 5 +++-- operators.h | 2 +- operators.o | Bin 3288 -> 0 bytes 6 files changed, 13 insertions(+), 10 deletions(-) delete mode 100755 calc delete mode 100644 calc.o delete mode 100644 operators.o diff --git a/calc b/calc deleted file mode 100755 index 023ec18849df720f42caff96d245271e7596b5b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11920 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 diff --git a/calc.c b/calc.c index 85f1466..f4403a0 100644 --- a/calc.c +++ b/calc.c @@ -5,28 +5,30 @@ int main(){ FILE *fp = NULL; int operand1, operand2; char operator = ' '; - int result, line = 0; + int line = 0; + double result =0; fp = fopen("read.txt","r"); if(fp!=NULL){ fscanf(fp, "%d", &line); - for(int i=0; iPqxN>Kcmg;N#c$xQ-97n@o?rFv(gEV~6RZ+pnc3 zQj@|eJ$~WsX~PStn<)SN57_9acQt)<^A)guAFT(+>ojQnS?WsbJLkrxR=Az;IM_5c zwcK5Iqc}Dda~~X=O1SA8yQIyuO@0Y><}9J;jxIMHM1qb$%Qe|!u@ z$xor&CguO2+$rV%q8yd-CnztK@@g{9?=8E9J@dcpFc ztXQPTctn~$i-Dd(p3mc5k&fnIWKm=uZ*OXQ0Q}z1f{``Nk2Mc=z>;0Unw!^w9u_=_ zkfTs5u;2qLv})?$!ANs6HsS!obEiG@f!TcoLxUX%=P3V>C(Z{uutm#aHrSB><=i;` z;zHFuM%3T=>iUIf66t~MB*O}HGS&)^qD0u%3?pgBsay%a01iz~ppfvP5@++%|0FUOp5pw6~#A1|k@f-%=xcR(Uh!5kT?>=8O9S|XUpomdp?DOyb`&;hikd5cnKEf_nl>I0(G)iN;{Z&v(Mqa-JFdawh8) zGG-+YN2%kLT$Zs)`HWR4I3~!Tc8tBI&^yDH?MCsObBg=SjI1zDXd=z6s%aapWs7!S zw~MZssk(p)C1c28LR-mqE8!7ghP`JE2b`1*d&IOI!Q!zlI)xNNPKT|snfRJzRUFeA zNjz=YBTm)GnTf9!%hi%O02%a3vg4AK8&N4OS(PCXZzkv2nVePf$`zKWTF`|9-HMJj z3~ov>ui_MkDrP>K8#ZhhT}__W;IJ_pGDvWM$xu$@P~|ARiszVlIW{p0%z#YY3}>RN zvQdPHDki+YGMTCYxe*n#M)atxdStbVZQQawI?&x6T@~+%C!>!fyL*$p$<@(V+4U;s z+99)I+Ql3|!_Ez_g(Vv6?TN;QqOpSG8o7~J)wWzS2h$UCTpLouM1E!jg(H-M!3B}Q zdF}0inHCb(5H&`Os|H+pRhl|6!4P%Xf*pWbF>;xZy{?fhnQDokQmiPcEEG#-#bRO> zP=(V6{jiM#18bs7w`aYI>&fxPdOd-<4|Mm&lRfdCWm+DXx`y$6UtxT-jW23x3Ll59 z^cmP8_`@PL{^OChmjVNG8-verFp-KnPrMW~uv>TQs9-Om_TCc2U0SCE=>npwg7D(4 zSAtC34(?F}wS!C<1eti9DL7pR8JweaN>ILr?$HF9cyZL>r(Yp6bU_9$1Fc|2+kN>_ zhb_MN>Un|lye|LwS@?%%;qet;&wuwU{Hj^_FU-QLV?}J*0-R>B5i&)`%B^0VDL6T! zQeZ|t&&u#pa9G(Zv3zkatJ-jKz)_PCdl2@|NTy&EOV9;dfe$En_3*EPq+n~jI_5E6 zEQoQIZo}Oe%Tq`~QGV2nKPPEnk9kq{hlp49Y6g$ZVt?Mp&-3~Di;r*j@&ESmIJc_b z7TPixKkik;;f3NZ1C45=qw^6_1Qyg?^yz9x&q-L-3dt2jM$&dWVtob=Wc4{7!f1;V1 zH^uKEKQZcG@x8>a(f9|+(MFA*Aby+1C&-VX@dt^oX#57^_iH@vZ7fGL{zFN#S2P|! zp0J$O_&&mKY5YZL&VH%!8;E~T@~~CoKO+8^#vdd<-zOd+iK4}?G<$U}{7&ON z^8Y7|-$MM~G`@xSe`);d#0Tlhq~ggE??2C#j4FJWVNv!HG4>V-Iv*t-yQdH&6L+33 z!{wC4;XW+uVI|pS$%wmnFOTO9*I@Ci)8()3)!1w&-)l8UU>N$N2n3?|&UAbq?*-IkZ#@Ot)PPw)OINR{TeZv5RyG z#QfnL>G^vCINc{u?3VoBCi^1-U(s!MfllYp{9Wod>1&IkZo31xdhx$VF9OvbA>M=Z z`0+lW`vi*plls4fz*lrzJdf)2f0p`J>kJ{@f%X1h01kbsI6)NU8f}R0X$wR3uj(UU zU9bIqy7a00Ik}x4t7?CO+AF=P<^L!Zs@1BUV$OhooE9ci?faA=)oT2TejS8*`TK31 z{NWj^+N-?I15R7w!u3^Ze^#K{Lyx~+>}Y+R^0$-*hTjJGO``XYX7&1Sqw{Ao=>0|S F|Nm%fAxQuL diff --git a/operators.c b/operators.c index d51cb3e..af88940 100644 --- a/operators.c +++ b/operators.c @@ -10,7 +10,8 @@ int mul(int op1, int op2) { return op1*op2; } -int div(int op1, int op2) { - return op1%op2; +double div(int op1, int op2) { + return (double)op1/(double)op2; } + diff --git a/operators.h b/operators.h index bd08f7d..e16bf60 100644 --- a/operators.h +++ b/operators.h @@ -1,4 +1,4 @@ int add(int op1, int op2); int mul(int op1, int op2); -int div(int op1, int op2); +double div(int op1, int op2); int minus(int op1, int op2); diff --git a/operators.o b/operators.o deleted file mode 100644 index 71b996c467c636eea2a5466488a72a5e4c372d7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3288 zcmbtW-ESL35TCotCvJ?B6p<)M7(^)%_-t3H=?5u>5ZVd|6)5lmO3(JiHnH!l^SKHi zfk+^vs0dLBiB>`i5`RE>$J-Fd`Dn?9HCno3oH$B;W4*W_~+!yR&ot zWc}5bO~U{w23&%HCQ*QeslmJ~re&Ci3~XLG`1N4#=%ClXxp{PRy>I;T?oSG~e)RNu zUqc?edknhs$6o&cnWr%Hm{@&EBynO8G@5NFfa%m~U|2f}bdu-Bw}e`Lr^pWGtrlu$ zVyyvVW8+OPgmGdR6Y3&!@ghIOiwK8!5!M=DwtFowrd9TQ%>FHA3x}A^S_39(%^P6M zsO*Pgc9gs@#!S{4nDMM}Dm|aF(o5-CV{S6@Fo0S=EX$= zGqT1ZvRs`v7jTQ8fK=*I%EB`p7p!z5YhuKTnBz0}GexdSU7)U>k1+G&B^*t79G`~q zS9%7YqUP|B4e&c|;DmnAwX2c$bhI)mCl5c(AJ+4Sy~5!w(?r(gjm_*@v6ww;uh@m` znL@EtC>73UbM3I_xvO>8bAx6TRVS!6R(H>pa;24QuAa?pcSEPTlj{V2=vFaSt{Vov zSBG}f>vbXD@Y`U1buD_Fi+YffS9jEH%-)y!!EqBdnReLQ;aX8n@Yik#>PiKSzABpgJA)Wc$T$`DA z9UTxO+jC?@5d|vkuMO<)L}t8~DAK+$uz$pMQDoA7EwZ!e*g)5C41WLnm;nJRu~QHp zAK(zpLQ9fZeCKtW1rs_XbPFa&;L{`U)ChcL1fCv&AL~azE6geTAkTM}ajDCuf)`cz zKgkhfyI5lUJmazv3{@O8yr^QS?@;%Mcjy7+sk zuIl@iHC*O-UBhLb`x-9u1iSlwJ9H{IhCwtoZHtd{%N#PUH(^o5xM%B6i&up){L4e zK9KZJrc5M7?sIWQ|8D^3K9ZljL-=(TvWicAO)~t*;65pe=)QEnbd21e<)SVqT$<{> zuOOC`|Id7&l27?lH`ep7C9H`M)H(hYQWVkSZ=o$IexKvZeWLi(PxSa5#Ar>KCr*Xj z<@jGnfJYf$jvpeP#J|V|b@pHQpD|x^gN|O1>>%Sx|2xd*bR`_~Z^uY9k?$|zuW^#J ze;NLCUS~(zKl<89zPhhTsdkwEJ@e(D=TEwxJNZsgQYg2XK;K3BhU)R@Oq1e&$M@$^ Jw5y`W{|DoA6BYmf From de02815449a5e7e1539c68608b80c4f3338bfeb3 Mon Sep 17 00:00:00 2001 From: SoheeKim Date: Tue, 20 Jun 2017 19:12:16 +0900 Subject: [PATCH 3/5] Modify-using function pointers --- calc.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/calc.c b/calc.c index f4403a0..9fbfb8d 100644 --- a/calc.c +++ b/calc.c @@ -7,6 +7,17 @@ int main(){ char operator = ' '; int line = 0; double result =0; + + int (*addP) (int,int); + int (*minusP) (int,int); + int (*mulP) (int,int); + double (*divP) (int, int); + + addP=add; + minusP=minus; + mulP=mul; + divP=div; + fp = fopen("read.txt","r"); if(fp!=NULL){ @@ -16,16 +27,16 @@ int main(){ fscanf(fp, "%d %c %d",&operand1, &operator, &operand2); switch(operator) { case '+': - result = add(operand1, operand2); + result = addP(operand1, operand2); break; case '-': - result = minus(operand1, operand2); + result = minusP(operand1, operand2); break; case '*': - result = mul(operand1, operand2); + result = mulP(operand1, operand2); break; case '/': - result = div(operand1, operand2); + result = divP(operand1, operand2); break; } printf("%d %c %d = %f\n", From a000822c6e52e74f42cd20f187421485a2fb91ad Mon Sep 17 00:00:00 2001 From: SoheeKim Date: Tue, 20 Jun 2017 22:42:24 +0900 Subject: [PATCH 4/5] my_fscanf --- calc.c | 5 +++-- my_fscanf.c | 39 +++++++++++++++++++++++++++++++++++++++ my_fscanf.h | 7 +++++++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 my_fscanf.c create mode 100644 my_fscanf.h diff --git a/calc.c b/calc.c index 9fbfb8d..695ea2e 100644 --- a/calc.c +++ b/calc.c @@ -1,5 +1,6 @@ #include #include "operators.h" +#include "my_fscanf.h" int main(){ FILE *fp = NULL; @@ -21,10 +22,10 @@ int main(){ fp = fopen("read.txt","r"); if(fp!=NULL){ - fscanf(fp, "%d", &line); + my_fscanf(fp, "%d", &line); for(int i=1; i +#include +void my_fscanf(FILE *fp, const char *format, ...) { + va_list list; + va_start(list, format); + while(*format) { + if(*format == '%'){ + format++; + switch(*format){ + case 'd':{ + int c = getc(fp); + double *Double=va_arg(list, double*); + while(isspace(c)){ + c=getc(fp); + } + unsigned int num= 0; + while(isdight(c)){ + num = num * 10 + c -'0'; + c=getc(fp); + } + *Double = num; + break; + } + case 'c':{ + char *ch = va_arg(list,char*); + char c=getc(fp); + *ch = c; + break; + } + case ' ': + break; + } + } + else + format++; + } + va_end(list); +} diff --git a/my_fscanf.h b/my_fscanf.h new file mode 100644 index 0000000..d2b9307 --- /dev/null +++ b/my_fscanf.h @@ -0,0 +1,7 @@ +#ifndef MY_FSCANF_H +#define MY_FSCANF_H +#include + +void my_fscanf(FILE *fp,const char *format, ...); + +#endif From d3fc920ae3eb3f68db2049aabf054c4446533237 Mon Sep 17 00:00:00 2001 From: SoheeKim Date: Tue, 20 Jun 2017 23:33:21 +0900 Subject: [PATCH 5/5] improve f_scanf --- calc.c | 49 --------------------------------------------- main.c | 21 ++++++++++++++++++++ my_fscanf.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++------- points.txt | 5 +++++ read.txt | 5 ----- 5 files changed, 76 insertions(+), 61 deletions(-) delete mode 100644 calc.c create mode 100644 main.c create mode 100644 points.txt delete mode 100644 read.txt diff --git a/calc.c b/calc.c deleted file mode 100644 index 695ea2e..0000000 --- a/calc.c +++ /dev/null @@ -1,49 +0,0 @@ -#include -#include "operators.h" -#include "my_fscanf.h" - -int main(){ - FILE *fp = NULL; - int operand1, operand2; - char operator = ' '; - int line = 0; - double result =0; - - int (*addP) (int,int); - int (*minusP) (int,int); - int (*mulP) (int,int); - double (*divP) (int, int); - - addP=add; - minusP=minus; - mulP=mul; - divP=div; - - - fp = fopen("read.txt","r"); - if(fp!=NULL){ - my_fscanf(fp, "%d", &line); - - for(int i=1; i +#include +#include "my_fscanf.h" + +int main(){ + fp = fopen("points.txt","r"); + char type[10]; + double x,y; + int line; + + if(fp!=NULL){ + my_fscanf(fp, "%d", &line); + for(int i =0; i < line; i++){ + my_fscanf(fp, "%s (%f,%f)",type, &x, &y); + if(strcmp(type, "point") == 0) { + printf("X: %f:, Y: %f\n", x, y); + } + } + } + return 0; +} diff --git a/my_fscanf.c b/my_fscanf.c index 40dcb6c..646b1e0 100644 --- a/my_fscanf.c +++ b/my_fscanf.c @@ -1,6 +1,9 @@ #include "my_fscanf.h" #include #include +#include +#include + void my_fscanf(FILE *fp, const char *format, ...) { va_list list; va_start(list, format); @@ -10,30 +13,70 @@ void my_fscanf(FILE *fp, const char *format, ...) { switch(*format){ case 'd':{ int c = getc(fp); - double *Double=va_arg(list, double*); + int *s=va_arg(list, int*); + while(isspace(c)){ - c=getc(fp); + } unsigned int num= 0; while(isdight(c)){ - num = num * 10 + c -'0'; + *s = num * 10 + c -'0'; c=getc(fp); } - *Double = num; + while (isspace(c)){} + format++; + ungetc(c,fp); break; } case 'c':{ char *ch = va_arg(list,char*); char c=getc(fp); + while (isspace(c)){} *ch = c; + format++; break; } - case ' ': + case 's':{ + char *sp = va_arg(list, char*); + int s = 1; + while(isspace(c=getc(fp))){} + + while (!isspace(c=getc(fp))){ + sp[s]=c; + s++; + } + sp[s]=0; + format++; + ungetc(c,fp); break; } + case 'f':{ + double *f_p=va_arg(list, double*); + double di = 0.1; + double c=getc(fp); + while(isspace(c)){} + *f_p = 0; + while (isdigit(c)){ + *f_p= *f_p * 10 + c - '0'; + c= getc(fp); + } + if (c == '.'){ + c = getc(fp); + while(isdigit(c)){ + *f_p=*f_p + (c - '0') * di; + di = di* 0.1; + c=getc(fp); + } + } + format++; + ungetc(c,fp); + break; + } + else{ + int c = getc(fp); + if(*format==c) + format++; } - else - format++; } va_end(list); } diff --git a/points.txt b/points.txt new file mode 100644 index 0000000..8954fb7 --- /dev/null +++ b/points.txt @@ -0,0 +1,5 @@ +4 +point (1.3,2.2) +point (2.5,3.0) +point (3.2,4.4) +point (1.0,5.9) diff --git a/read.txt b/read.txt deleted file mode 100644 index 3e2bf01..0000000 --- a/read.txt +++ /dev/null @@ -1,5 +0,0 @@ -5 -123 + 456 -234 * 234 -143 - 111 -987 / 132