From 1537be882a6633bc9ba5440872f0f5df72f807a2 Mon Sep 17 00:00:00 2001 From: 201424466 Date: Sat, 1 Jul 2017 09:22:53 +0900 Subject: [PATCH] Implement my_fscanf --- calc.c | 17 +++++++++-------- lab_14.tar | Bin 0 -> 10240 bytes my_fscanf.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ my_fscanf.h | 7 +++++++ operators.c | 10 +++++----- operators.h | 8 ++++---- 6 files changed, 77 insertions(+), 17 deletions(-) mode change 100644 => 100755 calc.c create mode 100644 lab_14.tar create mode 100755 my_fscanf.c create mode 100755 my_fscanf.h mode change 100644 => 100755 operators.c mode change 100644 => 100755 operators.h diff --git a/calc.c b/calc.c old mode 100644 new mode 100755 index 85f1466..1b0d10f --- a/calc.c +++ b/calc.c @@ -5,28 +5,29 @@ int main(){ FILE *fp = NULL; int operand1, operand2; char operator = ' '; - int result, line = 0; + double result, line = 0; fp = fopen("read.txt","r"); if(fp!=NULL){ - fscanf(fp, "%d", &line); + my_fscanf(fp, "%d", &line); - for(int i=0; ip33(3#~fC0UVNALuyf61KFQ-I<;JW_Nb?lj}^~u3M}0G4L6UMm790 zM+0N^o2pFP=+{i!v<8D=e>fV{4AZb}vj#?`UJ2v#EO%0X+AouMXLq;N?^J%cmHT1j zPUoHvCt2==ad+}aD@FA<@lz*{)2utGYg!oPFmuAF*?O+A)5m9DLpw-d3{Sp4J3H1G zRda>NGj&`nz|s`9Z$Ja3UOay~^&$1M`83yI8b&_W8ONH&xYYnPqGmny9j}}J zoY(bwT5nM|K{H79#?&eK!Dd(ILFPIUiFK$Scy%2P$r?4r`XEl5` zUf{>1(n4XU(*iOD_-vSi0~g5X;c{$65pltugw&$m7|Wi8xjSjf!4_s2bDhkGMyK%w zwPD4Oaj=f(6;0O=D=e|6IP#ykQK5cxQ+*aj^Xv`=+8YMu(>tj5ZmN6X@u8g zTiQ@gxUEf*x3;!gb5FfgjKFgJS9b`!ZT;ILdHyqO!?OAM$26eMe-+1`%x^pFiRHN? zFVK-mY{Qr`I&p$$y+xTT_}OI38ei8ux}mu}%dG3Qg`VtkN9tKu>`BFYfcL?7QJ!}{ z=KgOQa{upJ24Da7K;8fDW$x^Uf#(PC?GNXt-+lGvlhgBWw0#uNZEQ`pc}>(VPbeLwQT0D5iMTd@x9o;t(dOSCsTS+4(&w*Q;` za{Ukc1Dl`!?V;NLH-lAyWV!z@X9AKvrI=_TC%stXg-+c3D)CA5p&ZZ#B4U;~0N;xo z0F(rtYXFzd`831~K_ACR4fJ~dynS)~*9&;}^6z(l{0`S|USGd@3GaXV69w;oeTyo@ z;CQ(|OOVCESDstwwR~}TWx*}+9*EYo>`j7FnU8VL88|BC-~Y$%bBd5$3B686O>z zBE_h%DWeh!F8ti(L{(`-HbopUG-8a15a&lqLkJWaDX{0mV3JcpdBI4zck>>g^#3At zlF6F?JOD8M5AKVWG!2&SQ$!2@KjblExF=id54jT5ygQDS6!P5F9OiF&WN@wZ*Hyrj?d4Ksk096^rpyYq>#{ka%kBp(Z|5X_i zX?viVmJJ=~4~Cj$_n{5=sUiOcM_`(!_W5Tc=z(cl|JxNJky76Z0fm4 +#include + +void my_fscanf(FILE* fp, const char* format, ...){ + va_list list; //가변 인자 목록 포인터 + int dtemp=0; + char temp; + char ctemp= ' '; + va_start(list, format); + + while(*format){ + if(*format == '%'){ + format++; + switch(*format){ + case 'd': + while(isspace(temp)){ + //empty + } + while(isdigit(temp)){ + dtemp = temp; + temp = getc(fp); + } + dtemp = va_arg(list, int); + dtemp = 0; + format++; + break; + + case 'c': + while(isspace(temp)){ + //empty + } + while(isgraph(temp)){ + ctemp =temp; + temp = getc(fp); + } + ctemp = va_arg(list, char); + format++; + break; + default break; + } + } + else if(isspace(*format)){ + format++; + } + } + va_end(list); +} + + + + diff --git a/my_fscanf.h b/my_fscanf.h new file mode 100755 index 0000000..9ed3568 --- /dev/null +++ b/my_fscanf.h @@ -0,0 +1,7 @@ +#ifdef MY_FSCANF_H +#define MY_FSCANF_H +#include + +void my_fscanf(FILE *fp, const char *format,...); + +#endif /* !MY_FSCANF_H */ diff --git a/operators.c b/operators.c old mode 100644 new mode 100755 index d51cb3e..34999cd --- a/operators.c +++ b/operators.c @@ -1,16 +1,16 @@ #include "operators.h" -int add(int op1, int op2) { +double add(double op1, double op2) { return op1+op2; } -int minus(int op1, int op2) { +double minus(double op1, double op2) { return op1-op2; } -int mul(int op1, int op2) { +double mul(double op1, double op2) { return op1*op2; } -int div(int op1, int op2) { - return op1%op2; +double div(double op1, double op2) { + return op1/op2; } diff --git a/operators.h b/operators.h old mode 100644 new mode 100755 index bd08f7d..0172ff3 --- 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); -int minus(int op1, int op2); +double add(double op1, double op2); +double mul(double op1, double op2); +double div(double op1, double op2); +double minus(double op1, double op2);