pointers - C - Calculator with parameters -
i try create simple calculator c. numbers , operators should parameters. have main function , calculate function:
main:
int main(int argc, char *argv[]){ long result; long number1 = strtol(argv[1], null, 10); long number2 = strtol(argv[3], null, 10); result = calculate(number1, number2, argv[2]); printf("result: %li", result); return 0; }
calculate:
long calculate(long number1, long number2, char operator){ long result; switch(operator){ case '+': result = number1 + number2; break; case '-': result = number1 - number2; break; } return result; }
when start program this:
./calc 1 + 2
the result 0. think there problem operator parameter, because when write '+' instead of argv[2] works. dont know how fix it, works parameter, too.
one problem calculate
function expects char
, main
passes c string. problem when unexpected parameter passed, switch
fails set result
, leading undefined behavior.
one way compiler's in detecting issues provide prototypes functions ahead of point function gets called:
// put prototype first long calculate(long number1, long number2, char operator); int main(int argc, char *argv[]){ // main's code call of calculate } long calculate(long number1, long number2, char operator) { // implementation }
with prototype in place, compiler stops build error, because argv[2]
not match expected type of char
. problem becomes obvious you, insert missing asterisk, , program starts working expected.
you seeing warning second issue (not setting result
in code paths); shouldn't ignore it, , add default
clause produces output tells users went wrong.
Comments
Post a Comment