I am writing a program for my C programming class that is supposed to have basic ATM functions, but the problem is when I compile I get an error message saying "Undefined reference to 'Printf'." I have checked my printf statements and cannot find the problem. If anyone could help me out it would be much appreciated. Thanks
Code:#include <stdio.h> #define SCREEN_HEIGHT 80 // Number of newlines to print out #define MAXLINE 100 // Maximum user input characters // Function prototypes void displayMenu(void); float checkBalance(int acctNum); int getAccountIndex(int acctNum); int transferFunds(int acct1, int acct2,float amt); int withdrawCash(int acctNum, int amt); int getline(char s[], int lim); void printError(char errNo); // Global List of account numbers int accountList[] = {1234, 5289, 8744, 6912, 3421, 9658, 1487, 1147, 5732}; // Global List of corresponding balances for each account (in same order of account number above) float balanceList[] = {4798.32,19628.89,150.78,100.00,6742.00,874.05,543.91,578963.45,8943.12}; int main() { int accountNumber; char line[MAXLINE]; double atof(char []); int i; int c; char userInput; // Get the persons account number (like putting in a debit card) printf("Please enter your account number: "); getline(line,MAXLINE); accountNumber = atof(line); if (accountNumber != accountList[i]) { printError(-12); } do { displayMenu(); // read menu option using getline and atof functions getline(line, MAXLINE); int menuOption = atof(line); switch(menuOption) { case 1: checkBalance(accountNumber); break; case 2: printf("Please enter the Account Number to transfer to"); getline(line,MAXLINE); int x = atof(line); printf("How much would you like to transfer?"); getline(line,MAXLINE); int y = atof(line); float z = transferFunds(accountNumber, x, y); if (z != 0) printError(z); break; case 3: Printf("How much would you like to Withdraw?"); getline(line, MAXLINE); int a = atof(line); float b = withdrawCash(x,y); if (b < 0) printError(a); else printf("Cash despensing complete!"); break; default: printf("Error"); break; } } while (userInput != 4); return 0; // Assume successful completion of program if we made it here } /* displayMenu: display the menu options */ void displayMenu(void) { int j; char userInput; // Clear out the screen contents for(j=0;j<=SCREEN_HEIGHT;j++) printf("\n"); // Print the Menu Options printf("1. Check Balance\n"); printf("2. Transfer Funds\n"); printf("3. Withdraw Cash\n"); printf("4. Exit\n"); } /* checkBalance: return the balance of the specified account */ float checkBalance(int acctNum) { int x; x = getAccountIndex(acctNum); return balanceList[x]; } /* getAccountIndex: get the array index for the specified account */ int getAccountIndex(int acctNum) { int i; for (i=0; i< sizeof(accountList)/sizeof(int); i++) { if (acctNum == accountList[i]) // make sure account number is on the list { return i; } } return -1; } /* transferFunds: transfer funds from acct1 to acct2 in the amount of amt */ int transferFunds(int acct1, int acct2, float amt) { int i; int x; int y; float newBalance1; float newBalance2; x = getAccountIndex(acct1); // get each of the account indices. y = getAccountIndex(acct2); if (acct1 < amt) // verify there is enough money in account return -11; if (acct2 != accountList[i]) // make sure the account exists return -12; newBalance1 = acct1 + amt; newBalance2 = acct2 - amt; return 0; } /* withdrawCash: deduct amount from account and show message for dispensing */ int withdrawCash(int acctNum, int amt) { int newBalance; int x; x = getAccountIndex(acctNum); if (acctNum < amt) // make sure the account has enough money in it return -11; // Debit the amount from the account and print dispensing cash newBalance = acctNum - amt; printf("\nDispensing Cash...\n"); return 0; } /* atof: convert string s to double */ double atof(char s[]) { double val, power; int i, sign; for( i=0; isspace(s[i]); i++) /* skip white space */ ; sign = (s[i] == '-') ? -1 : 1; if( s[i] == '+' || s[i] == '-') i++; for( val=0.0; isdigit(s[i]);i++) val = 10.0 * val + (s[i]-'0'); if( s[i] =='.') i++; for( power=1.0; isdigit(s[i]); i++) { val = 10.0 * val + (s[i]-'0'); power *= 10.0; } return sign * val/power; } /* getline: get line into s, return length */ int getline(char s[], int lim) { int c,i; i=0; while( --lim > 0 && (c=getchar()) != EOF && c!= '\n') { s[i++] = c; } if(c == '\n') { s[i++] = c; } s[i] = '\0'; return i; } /* printError: print the corresponding error message */ void printError(char errNo) { // Based on input, print appropriate error message switch(errNo) { case -11: printf("I'm sorry, you do not enough money to handle this transfer.\n"); case -12: printf("I'm sorry, the account number you entered does not exist.\n"); case -13: printf("Menu Options INVALID\n"); default: // Print a generic error for anything else calling this function printf("ERROR\n"); break; } }



1Likes
LinkBack URL
About LinkBacks



