My calculator app hasn't been working properly after a user inputs a number. So I added fflush(stdin) and a space after the %d in scanf(). My question is should I only include both fflush(stdin) and a space after %c or will only one of the options suffice? I'm working on a Macbook, so I'm concerned that if I leave one out it won't work on other operating systems.
#include <stdio.h> 
#include <stdlib.h> 
//PROTOTYPE
int operationSwitch(); //Function to calculate total of operand1 and operand2.
int menu(); //Function for main menu.
int iResume(); //Function to continue the program or not.
char  iOperation    = '\0'; //choices (1-7)
float operand1      = 0; //number 1
float operand2      = 0; //number 2
float operandTotal  = 0; //total
int   testPrime, counter, prime = 0; 
char cContinue   = '\0'; 
char symbol      = '\0'; 
int main(){
    menu();
return 0;
}
int menu (){
  do {
      printf("\nPlease choose an operation: ");
      printf("\n(1) Addition\n ");
      printf("\n(2) Subtraction\n ");
      printf("\n(3) Multiplication\n ");
      printf("\n(4) Division\n ");
      printf("\n(5) Modulus (integers only)\n ");
      printf("\n(6) Test if Prime (integers only)\n ");
      printf("\n(7) Exit\n ");
      printf("\nChoose (1-7):\t");
      fflush(stdin);
      scanf(" %c", &iOperation);
  } while (iOperation < 49 || iOperation > 55 );
  if (iOperation != 54 && iOperation != 55){ //ASCII 55 == 7)
    printf("\nEnter number 1:\t");
    fflush(stdin);
    scanf(" %f", &operand1);
    printf("\nEnter number 2:\t");
    fflush(stdin);
    scanf(" %f", &operand2);
  }
    operationSwitch();
  /*** RESULTS ***/
  if ( symbol == '/' && operand2 == 0) {
    printf("\n\t-----| Answer: %.2f / %.2f = Undefined |-----\n", operand1,operand2);
  } else if (iOperation != 54) {
    printf("\n\t-----| Answer: %.2f %c %.2f = %.2f |-----\n", operand1, symbol, operand2, operandTotal);
  }
      iResume();
  return 0;
} //End Menu
/*********************************
  SWITCH FUNCTION
*********************************/
int operationSwitch() {
  switch (iOperation) {
    case 49://1 Addition Ascii 49 == 1 43 == +
      operandTotal = operand1 + operand2;
      symbol = '+';
      break;
    case 50: //2 Substraction
      operandTotal = operand1 - operand2;
      symbol = '-';
      break;
    case 51: //3 Multiplication
      operandTotal = operand1 * operand2;
      symbol = '*';
      break;
    case 52: //4 Division
      operandTotal = operand1 / operand2;
      symbol = '/';
      break;
    case 53: //5 Modulus
      operandTotal = (int)operand1 % (int)operand2;
      symbol = '%';
      break;
    case 54: //6
      prime = 1;
      printf("\nEnter number to be tested for prime: ");
      fflush(stdin);
      scanf(" %d", &testPrime);
        for(counter = 2; counter <= (testPrime/2); counter++ )
        {
        if(testPrime % counter == 0)
          {
              prime = 0;
              break;
          }
        }
        if (prime == 1) {
                printf("\n\t| %d is a prime number. |\n", testPrime);
        }
        else {
            printf("\n\t| %d is not a prime number. |\n", testPrime);
            printf("\n\t| %d * %d = %d \n", testPrime/counter, counter , testPrime);
        }
      break;
    case 55:
      printf("\nGood Bye\n");
      exit(0);
      break;
    default:
      printf("\nYou entered: %c - Please try again ", iOperation );
      break;
  } //End Switch iOperation
  return 0;
} //End Switch Function
/*********************************
  RESUME FUNCTION
*********************************/
int iResume() {
  printf("\nWould you like to try again?\nPress \'Y\' to go to menu,\nor any key to quit?\t");
  fflush(stdin);
  scanf(" %c", &cContinue);
  if (cContinue == 'y' || cContinue == 'Y'){
    menu();
  } else {
    printf("Good Bye!\n" );
  }
  return 0;
}
 
    