K & R C Programs Exercise 7-5.

K and R C, Solution to Exercise 7-5:
K and R C Programs Exercises provides the solution to all the exercises in the C Programming Language (2nd Edition). You can learn and solve K&R C Programs Exercise.
Rewrite the postfix calculator of chapter 4 to use scanf and/or sscanf to do the input number conversion.

`/************************************************************ You can use all the programs on  www.c-program-example.com* for personal and learning purposes. For permissions to use the* programs for commercial purposes,* contact [email protected]* To find more C programs, do visit www.c-program-example.com* and browse!* *                      Happy Coding***********************************************************/#include<stdio.h>#include<math.h>       /*for atof()*/#define MAXTOP 100     /* max size of operand or operator  */#define NUMBER  '0'    /* SIGNAL THAT A NUMBER WAS FOUND   */#define MAXVAL 100int gettop(char []);void push(double);double pop(void);int sp = 0;          /* Next free stack position. */double val[MAXVAL];  //reverse Polish calulatorint main(void){ int type; double op2; char s[MAXOP]; while((type = getop(s)) != EOF) {  switch(type)  {  case NUMBER:   push(atof(s));   break;  case '+':   push(pop() + pop());   break;  case '*':   push(pop() * pop());   break;  case '-':   op2=pop();   push(pop() - op2);   break;  case '-':   op2=pop();   if(op2 != 0.0)    push(pop() / op2);   else printf("nError: Zero divissorn");   break;  case '%':   op2 = pop();   if(op2)    push(fmod(pop(), op2));   else    printf("nError: Division by zero!");   break;  case 'n':   printf("t%.8gn",pop());   break;   default:   printf("error: unknown command %sn", s);   break;  } } return 0;}/* Getop: get next operator or numeric operand. */int getop(char s[]){ int i = 0; int c; int rc; static char lastc[] = " "; sscanf(lastc,"%c", &c); lastc[0] = ' '; /* Skip whitespace */ while((s[0] = c ) == ' ' || c == 't')  if(scanf("%",&c) == EOF)   c = EOF; s[1] = ''; /* Not a number but may contain a unary minus. */ if(!isdigit(c) && c != '.' )  return c;                if(isdigit(c))  do{   rc = scanf("%c",&c);   if(!isdigit(s[++i] = c))    break;  }while(rc != EOF)   if(c == '.')    do{     rc = scanf("%c",&c);     if(!isdigit(s[++i] = c))      break;    }while(rc != EOF)     s[i] = ''; if(rc != EOF)  lastc[0] = c; return NUMBER;}/* push: push f onto stack. */void push(double f){ if(sp < MAXVAL)  val[sp++] = f; else  printf("nError: stack full can't push %gn", f);}/*pop: pop and return top value from stack.*/double pop(void){ if(sp > 0)  return val[--sp]; else {  printf("nError: stack emptyn");  return 0.0; }}`
`Read more c programsC BasicC StringsK and R C Programs Exercise`

You can easily select the code by double clicking on the code area above.

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

(you can send this program to your friend using this button)

To browse more C Programs visit this link
(c) www.c-program-example.com

C Program to demonstrate sscanf statement.

C Program to demonstrate the ‘sscanf’ statement.
sscanf statement reads formatted data from the string, Different syntax of sscanf are:
A = sscanf(str, format)
A = sscanf(str, format, sizeA)
[A, count] = sscanf(…)
[A, count, errmsg] = sscanf(…)
[A, count, errmsg, nextindex] = sscanf(…).Read more about C Programming Language .

`/************************************************************ You can use all the programs on  www.c-program-example.com* for personal and learning purposes. For permissions to use the* programs for commercial purposes,* contact [email protected]* To find more C programs, do visit www.c-program-example.com* and browse!* *                      Happy Coding***********************************************************/#include <stdio.h>main(){ char Host[64]; char User[64]; char *Buff = "Jobname=job1 Hostname=arnamul User=leslim Time=11:15"; /*            <---------->          <-----> <---------> <-------->  *              |                      |         |           |  *              |           ------------         |           |  *              |           |   ------------------           V  *              |           |   |                       NULL  *              V           V   V                                    */ sscanf (Buff, "%*s Hostname=%s %s", Host, User); printf("Host is %sn", Host); printf("User is %sn", User); exit(0);}`
`Read more c programs `
`C BasicC StringsK and R C Programs Exercise`

You can easily select the code by double clicking on the code area above.